2013-04-04 101 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构造

相关问题