我一直在尝试这个,但似乎无法理清思路。我想要做的是...
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());
}
计划是这样使用它的,这将在基类周围“包装”单例模式...
public class SingletonFoo : SingletonType<SingletonFoo, Foo> {
}
但是,我一直得到这个错误:
无法从“TBaseClass”派生,因为它是类型参数
嗯...我以为类型正是你需要从中派生的东西!
那我错过了什么吗?
注:当然,这只是一个微不足道的例子,因为它没有提供任何有用的信息。但是假设SingletonType
还有很多其他与问题无关的逻辑,因此被省略以便专注于本文。