2013-04-04 64 views
0

我有2個項目,一個網站和一個代理庫(DLL)如何限制對C#中特定類的訪問?

代理項目有..

public class Client 
{ 
} 

public class Proxy 
{ 
    public Client GetClient() 
    { 
     return new Client(); 
    } 
} 

我怎樣才能使網站從創建客戶端的新實例,但允許它來創建代理的一個實例,仍然運行GetClient?

+0

你需要有客戶端類的只有一個實例,所有的時間? – ppetrov 2013-04-04 20:52:15

回答

5

您可以更改客戶端:

internal class Client 
{ 
} 

這樣的網站項目甚至無法看到客戶端類,或者你可以這樣做:

public class Client 
{ 
    internal Client() 
    { 

    } 
} 

這樣的網站可以看到它並與其交互,但實際上並不構建實例。

+0

這就是我一直在尋找的東西,沒有考慮將構造函數設爲內部 – jaekie 2013-04-04 20:56:56

+0

@csharpdev不用擔心,這些簡單的解決方案不時會讓所有人都時時逃脫! – Clint 2013-04-04 20:58:48

+0

通常我從來沒有使用內部,但因爲我在一個團隊工作,許多人沒有使用我們爲他們創建的類;)..現在他們將不得不使用它! – jaekie 2013-04-04 21:00:24

1

如果你不希望能夠創建客戶端的新實例,考慮要麼使得客戶端的靜態或使用Singleton模式

2
  1. 創建一個公共接口IProxy。確保它有你想公開公開的Proxy的所有方面。

  2. Proxy實施IProxy

  3. 使Proxyinternal(或甚至私人和嵌套類Client,如果適用)。

1

可以使用Singleton模式,或在您的客戶端類聲明internal構造

相關問題