如何限制对C#中特定类的访问?
问题描述:
我有2个项目,一个网站和一个代理库(DLL)如何限制对C#中特定类的访问?
代理项目有..
public class Client
{
}
public class Proxy
{
public Client GetClient()
{
return new Client();
}
}
我怎样才能使网站从创建客户端的新实例,但允许它来创建代理的一个实例,仍然运行GetClient?
答
您可以更改客户端:
internal class Client
{
}
这样的网站项目甚至无法看到客户端类,或者你可以这样做:
public class Client
{
internal Client()
{
}
}
这样的网站可以看到它并与其交互,但实际上并不构建实例。
答
如果你不希望能够创建客户端的新实例,考虑要么使得客户端的静态或使用Singleton模式
答
创建一个公共接口
IProxy
。确保它有你想公开公开的Proxy
的所有方面。有
Proxy
实施IProxy
。使
Proxy
internal
(或甚至私人和嵌套类Client
,如果适用)。
答
可以使用Singleton模式,或在您的客户端类声明internal
构造
你需要有客户端类的只有一个实例,所有的时间? – ppetrov 2013-04-04 20:52:15