通常、シングルトンは一度作成され、ドメインの存続期間中存在します。シングルトンを再作成することは危険な作業であり、定義上、私が提供したコードは真のシングルトンではありません。
あなたが後にしているように見える動作は、無効にすることができる静的にアクセス可能な単一のオブジェクトキャッシュです。
public static class SingletonAccessor
{
private static SomeClass _instance;
private static object _lock = new Object();
public static SomeClass Singleton
{
get
{
lock (_lock)
{
if (_instance == null)
{
_instance = new SomeClass();
}
return _instance;
}
}
}
public static void Recycle()
{
lock (_lock)
{
if (_instance != null)
{
// Do any cleanup, perhaps call .Dispose if it's needed
_instance = null;
}
}
}
}