C# では、次のように Singleton クラスを実装できることがわかりました。
class Singleton
{
private static Singleton _instance;
public static Singleton Instance => _instance ??= new Singleton();
protected Singleton() { }
}
type のインスタンスに対して機能しますSingleton
。つまり、
var a = Singleton.Instance;
var b = Singleton.Instance;
Console.WriteLine(ReferenceEquals(a, b)); //Prints True.
しかし、Singleton の派生クラスも Singleton パターンに従うようにするにはどうすればよいでしょうか。つまり、次のようになります。
class A:Singleton
{ ... }
A a = A.Instance;
この場合、静的メンバーはクラスInstance
によってアクセスされ、目的ではないインスタンスを作成します。さらに、このソリューションには 2 つの主な問題があります。Singleton
Singleton
- 派生クラスは独自のコンストラクターを実装し、シングルトン パターンを失う可能性があります。
- の別のインスタンスがある
Singleton
場合、派生クラスはその派生の少ないインスタンスを参照します
私の質問は:派生クラスもシングルトンであることを保証する C# でシングルトン クラスを実装する別の方法はありますか?