我一直在尝试,但是似乎无法弄清楚。我想做这个...

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的类型。您不能从该类继承,也没有限制为非密封类型的约束,因此,无法尝试通过通用参数从该类继承。

10-07 13:19