Como fazer uma classe base singleton genérica C # [duplicate]
Esta questão já tem uma resposta aqui:
O que é um padrão de modelo genérico de singleton threadsafe bom em c # 22 respostasEu estou tentando criar uma classe base singleton genérica 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;
}
}
Mas eu tenho que fazer o construtor como público em um derivado.
public class Test : SingletonBase<Test>
{
public void A()
{
}
private Test()
: base()
{ }
}
Erro de compilação:
'Teste' deve ser um tipo não-abstrato com um construtor público sem parâmetros, a fim de usá-lo como parâmetro 'T' no tipo genérico ou método 'Teste'
Como posso conseguir isso?