【发布时间】:2016-11-16 04:01:26
【问题描述】:
在传统的单例中,您可以像这样初始化实例:
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();
失败,因为 Instance 为 null 并且构造函数中的断点从未命中。
更新:Base 构造函数被调用,但 Derived 构造函数没有。 这可能是因为在类上调用静态方法时会触发静态构造函数。我调用的静态方法是在父级上,而不是在后代上。
【问题讨论】:
标签: c# inheritance static-constructor object-initialization