Можно ли в C # 4.0 наследовать класс из параметра универсального типа?

Я пробовал это, но, похоже, не могу понять этого. Я хочу сделать это ...

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());
}

План состоял в том, чтобы использовать его вот так, что бы как бы «обернуть» шаблон singleton вокруг базового класса ...

public class SingletonFoo : SingletonType<SingletonFoo, Foo> {
}

Однако я продолжаю получать это

Cannot derive из TBaseClass, потому что это параметр типа

Гм ... Я думал, что типы - это именно то, что вы делаете производными!

Так что же мне не хватает?

Примечание: Это , конечно, тривиальный пример, потому что он не добавляет ничего полезного, но предположим, что SingletonType имеет много другой логики, которая не имеет отношения к вопросу, поэтому она была опущена, чтобы сосредоточиться на рассматриваемом вопросе.

24
задан MarqueIV 16 September 2018 в 15:28
поделиться