I've been trying this, but I can't seem to figure this out. I want to do this...
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());
}
The plan was to use it like this which would sort of 'wrap' the singleton pattern around a base class...
public class SingletonFoo : SingletonType<SingletonFoo, Foo> {
}
However, I keep getting this
Cannot derive from 'TBaseClass' because it is a type parameter
Um... I thought types were exactly what you do derive from!
So what am I missing?
Note: This is, of course, a trivial example as it doesn't add anything helpful, but assume SingletonType
has a lot of other logic which isn't relative to the question, hence it was omitted to focus on the question at hand.