rez*_*eza 0 c# singleton subclass
好吧,我有一个GraphMaster包含许多系统范围值的单例类.我有一个GraphObject : GraphMaster具有图形特定数据的子类.通过子类化,我可以访问全局类或子类的成员.通过使用单例类,我可以在任何地方更改全局变量,并将它们反映在所有子类中.
但是,我被卡住了,因为基类的构造函数想要调用单例类的构造函数,但它不能被标记为私有.
我该如何解决这个问题?我正在尝试做什么?由于对这篇文章的回应,我走了这条道路:我可以创建一个"全局"对象来存储多个对象的变量吗?
例如,
public class GraphMasterObject {
private static GraphMasterObject instance;
private GraphMasterObject() { }
}
public static GraphMasterObject Instance {
get {
if (instance == null) instance = new GraphMasterObject();
return instance;
}
}
public int globalVar=10;
}
public class GraphObject : GraphMasterObject {
public GraphObject() {
}
public int localVar=20;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够做到
GraphObject go = new GraphObject();
go.globalVar <- this is 10
GraphMasterObject.Instance.globalVar = 20;
go.globalVar <- now this is 20
Run Code Online (Sandbox Code Playgroud)
好吧,我有一个单例类GraphMaster,它包含许多系统范围的值.我有一个子类GraphObject:GraphMaster,它具有图形特定的数据.
这是一个问题.只要你有一个具有子类的类,它根据定义就不是单例.有人可以在任何时候添加另一个子类,即使你只有每个子类的一个实例,你也会有两个与基类兼容的不同实例.
如果已经有一个实例,你可以在基类构造函数中添加一些东西来抛出异常,但它会非常臭.从根本上说,单身人士与子课程不相容.重新思考你的设计.(理想情况下,首先要避免单身模式,但那是另一回事...)
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |