如何防止外部的类异常但保持可用?

use*_*010 2 c# factory .net-assembly

我为一个程序集写了一个类,它只能由这个程序集中的工厂实例化.

大会外:

MyClass myClass = factoryInstance.GetInstanceOfMyClass();
Run Code Online (Sandbox Code Playgroud)

应该禁止在外面实施这门课程

禁止:

MyClass myClass = new MyClass();
Run Code Online (Sandbox Code Playgroud)

我见过一些复杂的方法.有一种我想念的简单方法吗?

Fre*_*örk 7

最简单的方法应该是构造函数internal:

public class MyClass
{
    internal MyClass()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

只要您的工厂方法位于同一个程序集中,它就能够创建您的类的实例,但程序集之外的任何代码都无法执行此操作.

  • Damnit,我讨厌当"1个新答案被张贴"时弹出xD +1 (3认同)