的情况下在传统的单,你可以初始化实例,像这样:初始化单后裔
private static readonly Messages _instance = new Messages();
然后你通过一个getter访问它,就像这样:
public static Messages Instance {
get {
return _instance;
}
}
在这种情况下,我们有一个父母和多个后代。
在父,我们有
protected static Base _instance;
public static Base Instance {
get {
return _instance;
}
}
在后代中,我们使用类的构造函数来填充静态变量。
static Derived() {
_instance = new Derived();
}
这应该起作用,因为在使用类之前首先引用类时调用类构造函数。 由于某种原因,这不起作用。
Derived.Instance.Initialize();
失败,因为实例为空,并且构造函数中的断点永远不会被命中。
更新:基础构造函数被调用,但派生构造函数没有。 这可能是因为在类上调用静态方法时触发静态构造函数。我所调用的静态方法是父类,而不是后代。
>当您创建和引用Derived2时会发生什么? – BWhite
我认为你是正确的关于实例得到破坏,但它实际上工作。每个班级创建并保存正确的实例。 – BWhite
@BWhite你确定吗?我刚刚测试过它进行仔细检查,它肯定会被覆盖。看到我的编辑 – Rob