我一直在尝试,但是似乎无法弄清楚。我想做这个...
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> {
}
但是,我不断得到这个
嗯...我以为类型就是您的工作对象!
那我想念什么呢?
注意:当然,这是一个简单的示例,因为它并没有增加任何帮助,但是假设
SingletonType
还有很多其他与问题无关的逻辑,因此省略了重点讨论手头的问题。 最佳答案
不,这是不可能的。例如,采用声明为sealed
的类型。您不能从该类继承,也没有限制为非密封类型的约束,因此,无法尝试通过通用参数从该类继承。