Generalizing the Initialization of Singleton Derived Classes
Personally I've always preferred to have limited number of singletons in a project. Generally there's a good need for them, but how you implement them is another question. For instance I've seen people have a single singleton before with properties that were the objects it needed to have single instances of. Obviously any objects linked in a singleton will only have one if you access them through the singleton. this allows you to have ONE singleton object as a sort of container to hold any objects that need to be singletons. Mind you this is a personal preference, so I will digress.

I think the answer you're looking for is here https://stackoverflow.com/questions/16745629/how-to-abstract-a-singleton-class

It requires both the self-referencing generic typing and the use of the new() constraint.

This is the closest I've ever seen to what you're trying to do. It is not very strictly enforced though because of the need for the new() constraint.