我正在尝试创建一个通用的单例基类,例如
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;
}
}
但我必须在派生的构造函数中公开构造函数。
public class Test : SingletonBase<Test>
{
public void A()
{
}
private Test()
: base()
{ }
}
编译错误:
“Test”必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型或方法“Test”中将其用作参数“T”
我怎样才能做到这一点?