【发布时间】:2017-02-01 16:21:21
【问题描述】:
我有一个班级A,还有一个班级AStore。我的要求是防止所有其他方法初始化类A 的实例,它们应该从AStore 获取实例。另外,我还需要从实例中访问A的成员函数。
工厂模式不适合这个问题,因为A 的构造函数仍然是公开的。理想情况下,当调用类 A 的构造函数同时可以访问其成员函数时,它应该会引发编译错误。
我可以获得 C# 解决方案吗?
【问题讨论】:
-
我认为您唯一的选择是将
A的构造函数设为私有并在AStore中使用反射来创建A的实例。 -
你可以这样做,但不是类
AStore,而是在A上放置一个公共静态CreateInstance方法和一个私有构造函数 -
"工厂模式不适合这个问题,因为 A 的构造函数仍然是公共的" 为什么它仍然是公共的?
-
@JonHanna -- 我认为是
public还是internal并不重要,关键是他/她不希望程序集中的其他类创建实例(除了AStore). -
@rory.ap 如果它不是公开的,那么它会立即阻止它,就其他程序集而言,那为什么它仍然是公开的?
标签: c# design-patterns constructor private