Inheritable C# singleton implementation