的情況下在傳統的單,你可以初始化實例,像這樣:初始化單後裔
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