如何使一个普通的单基类C# [英] How to make a generic singleton base class C#
本文介绍了如何使一个普通的单基类C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想创建一个通用的单基类,像
I am trying to create a generic singleton base class like
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;
}
}
但我必须做出构造函数中衍生的一种公共
But I have to make constructor as public in derived one.
public class Test : SingletonBase<Test>
{
public void A()
{
}
private Test()
: base()
{ }
}
编译错误:
测试必须是一个非抽象类型具有公共的无参数的构造函数,才能在泛型类型或方法测试
'Test' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic type or method 'Test'
我怎样才能做到这一点?
How can I achieve this?
推荐答案
问题是您的通用的限制其中T:类,新的()
。在新()
约束需要公众对T.参数的构造函数有没有办法解决这个;你需要在许可控制器
提供这样一个构造函数。
The problem is your generic constraint where T : class, new()
. The new()
constraint requires a public, parameterless constructor on T. There is no way around this; you need to provide such a constructor in Permission Controller
.
这篇关于如何使一个普通的单基类C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文