如何在C#中限制对特定类的访问?

时间:2013-04-04 20:49:00

标签: c# proxy internal

我有2个项目,一个网站和一个代理库(dll)

代理项目有..

public class Client
{
}

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

如何阻止网站创建新的Client实例,但允许它创建Proxy实例,仍然运行GetClient?

4 个答案:

答案 0 :(得分:5)

您可以将客户更改为:

internal class Client
{
}

这样网站项目甚至看不到Client类,或者你可以这样做:

public class Client
{
   internal Client()
   {

   }
}

这样网站就可以看到它并与之交互,但实际上并没有构建实例。

答案 1 :(得分:2)

  1. 创建公共接口IProxy。确保它具有您希望公开的Proxy的所有方面。

  2. Proxy实施IProxy

  3. 制作Proxy internal(甚至私有,以及Client的嵌套类(如果适用)。

答案 2 :(得分:1)

如果您不希望能够创建新的Client实例,请考虑使Client静态或使用Singleton模式

答案 3 :(得分:1)

您可以使用单例模式,或在Client类中声明internal构造函数