Я пробовал это, но, похоже, не могу понять этого. Я хочу сделать это ...
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
имеет много другой логики, которая не имеет отношения к вопросу, поэтому она была опущена, чтобы сосредоточиться на рассматриваемом вопросе.