D J*_*D J 5 c# generics singleton
我正在尝试创建一个通用的单例基类
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;
}
}
Run Code Online (Sandbox Code Playgroud)
但是我必须将构造函数作为派生的公共构造函数.
public class Test : SingletonBase<Test>
{
public void A()
{
}
private Test()
: base()
{ }
}
Run Code Online (Sandbox Code Playgroud)
编译错误:
'Test'必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型或方法'Test'中将其用作参数'T'
我怎样才能做到这一点?
问题是你的通用约束where T : class, new().该new()约束要求在T.公共,无参数构造函数有没有办法解决这个; 你需要提供这样的构造函数Permission Controller.