除了在定义的"工厂类"中,如何防止对象被实例化?

Sim*_*mon 3 .net

简而言之,我希望防止对象被实例化,除了在对象工厂类中指定的静态方法.

这可能吗?

tva*_*son 9

如果您的工厂和类在同一个程序集中,则可以在内部标记构造函数.这将使得程序集外的任何类都不能调用构造函数(没有反射).您的工厂在同一个程序集中,将构造函数视为公共构造函数,因此可以访问它们.

或者,您可以将构造函数设置为private,并在工厂内使用反射来实例化对象.您可以使用反射进行小的命中,但这不具有组装限制,并且还可以使同一组件中的其他类不使用除工厂之外的任何其他类.