Wie erstelle ich eine generische Singleton-Basisklasse C # [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Was ist ein gutes threadsicheres generisches Singleton-Vorlagenmuster in C #? 22 AntwortenIch versuche, eine generische Singleton-Basisklasse wie zu erstellen
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;
}
}
Aber ich muss Konstruktor als öffentlich in abgeleiteten machen.
public class Test : SingletonBase<Test>
{
public void A()
{
}
private Test()
: base()
{ }
}
Kompilierungsfehler:
'Test' muss ein nicht abstrakter Typ mit einem öffentlichen parameterlosen Konstruktor sein, um ihn als Parameter 'T' im generischen Typ oder in der generischen Methode 'Test' zu verwenden.
Wie kann ich das erreichen?