従来のシングルトンでは、次のようにインスタンスを初期化できます。
private static readonly Messages _instance = new Messages();
次に、次のようにゲッターを介してアクセスします。
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 コンストラクターは呼び出されません。これは、クラスで静的メソッドが呼び出されたときに静的コンストラクターがトリガーされることが原因である可能性があります。私が呼び出している静的メソッドは、子孫ではなく親にあります。