Jak utworzyć ogólną singletonową klasę bazową C # [duplikat]
To pytanie ma już tutaj odpowiedź:
Jaki jest dobry wzorzec szablonu dla pojedynczego wątku w C # 22 odpowiedziPróbuję utworzyć ogólną singletonową klasę bazową, taką jak
public class SingletonBase<T> where T : class, new()
{
private static object lockingObject = new object();
private static T singleTonObject;
protected SingletonBase()
{
}
public static T Instance
{
get
{
return InstanceCreation();
}
}
public static T InstanceCreation()
{
if(singleTonObject == null)
{
lock (lockingObject)
{
if(singleTonObject == null)
{
singleTonObject = new T();
}
}
}
return singleTonObject;
}
}
Ale muszę zrobić konstruktora jako publicznego w pochodnym.
public class Test : SingletonBase<Test>
{
public void A()
{
}
private Test()
: base()
{ }
}
Błąd kompilacji:
„Test” musi być typem nie-abstrakcyjnym z publicznym konstruktorem bez parametrów, aby użyć go jako parametru „T” w typie ogólnym lub metodzie „Test”
Jak mogę to osiągnąć?