代码之家  ›  专栏  ›  技术社区  ›  Yoda ESG

如何使引用库中的单个类仅在一个项目中显式实例化,或者至少不鼓励使用它?

  •  -1
  • Yoda ESG  · 技术社区  · 6 年前

    现在在另一个项目中 MyContextProject MyContext 它建立并返回正确的Telerik上下文,并将Telerik上下文的所有实例化替换为 MyContext .

    我想阻止任何人在外部显式实例化Telerik的数据访问上下文 然而,我不想限制Telerik数据访问的任何其他类型的使用。

    这是可以实现的吗?有没有一种方法可以创建一个注释,因为我不知道C#中有什么机制可以支持这一点。


    1 回复  |  直到 6 年前
        1
  •  0
  •   Striezel EDi    6 年前

    我想阻止任何人在外部显式实例化Telerik的数据访问上下文 MyContextProject

    不,这是不可能的——至少我不知道。由于Telerik数据访问上下文在该库/程序集中是公共的,因此任何引用该程序集的应用程序都可以实例化这样的上下文类。

    如果您可以修改库的源代码(即Telerik数据访问),情况会有所不同。在这种情况下,您可以将库上下文类的可见性设置为internal并添加 InternalsVisibleTo attribute 这样您的程序集就可以使用上下文类,而其他程序集则不能。例如。:

    [assembly: InternalsVisibleTo("MyAssembly")]
    

    这样,任何使用 被改进的 库无法实例化库的上下文类,但必须使用 MyContext