我一直在尝试这个,但我似乎无法解决这个问题.我想做这个...
public abstract class SingletonType<TSingleton, TBaseClass> : TBaseClass
where TSingleton : TBaseClass, new()
where TBaseClass : class
{
static TSingleton _singleton;
public static TSingleton Singleton
=> _singleton ?? (_singleton = new TSingleton());
}
Run Code Online (Sandbox Code Playgroud)
计划是像这样使用它,它可以在基类周围"包裹"单例模式......
public class SingletonFoo : SingletonType<SingletonFoo, Foo> {
}
Run Code Online (Sandbox Code Playgroud)
但是,我一直这样做
无法从'TBaseClass'派生,因为它是一个类型参数
嗯...我想类型为你到底是什么做的派生!
那我错过了什么?
注意:这当然是一个简单的例子,因为它没有添加任何有用的东西,但是假设SingletonType有许多其他逻辑与问题无关,因此忽略了关注手头的问题.