Cómo hacer una clase base genérica de singleton C # [duplicar]
Esta pregunta ya tiene una respuesta aquí:
¿Qué es un patrón de plantilla genérico singleton seguro para subprocesos en C #? 22 respuestasEstoy tratando de crear una clase base genérica de singleton como
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;
}
}
Pero tengo que hacer constructor como público en derivado.
public class Test : SingletonBase<Test>
{
public void A()
{
}
private Test()
: base()
{ }
}
Error de compilación:
'Prueba' debe ser un tipo no abstracto con un constructor público sin parámetros para usarlo como parámetro 'T' en el tipo genérico o método 'Prueba'
¿Cómo puedo conseguir esto?