我在解决方案的许多项目中都实例化了Telerik数据访问上下文。
现在,在单独的项目MyContextProject
中,我创建了一个类MyContext
,该类将实例化并返回正确的Telerik上下文,并用MyContext
替换Telerik上下文的所有实例。
我想防止任何人在MyContextProject
之外显式实例化Telerik的数据访问上下文,但是我不想限制Telerik Data Access中任何其他类型的使用。
这是可以实现的吗?也许有一种方法可以创建注释,因为我不知道C#中的任何机制都可以支持该注释。
我试图使它成为一个通用的问题,Telerik可以用任何其他库替换。
答案 0 :(得分:0)
我想防止任何人在
MyContextProject
之外明确实例化Telerik的数据访问上下文
不,这是不可能的-至少我不知道。由于Telerik数据访问上下文在该库/程序集中是公共的,因此引用该程序集的任何应用程序都可以实例化此类上下文类。
如果您可以修改库的源代码(即Telerik Data Access),情况将有所不同。在那种情况下,您可以将库上下文类的可见性设置为internal,然后向其添加InternalsVisibleTo attribute,以便您的程序集可以使用上下文类,而其他程序则不能。例如:
[assembly: InternalsVisibleTo("MyAssembly")]
这样,任何使用修改后的库的应用程序都无法实例化库的上下文类,而必须使用库中的MyContext
类。但是,如果他们要使用库的上下文类,那仍然不能阻止任何人使用原始的,未修改的库。因此,实际上您无法强制执行此操作,答案仍然是:否。