Вам все это не нужно, C # уже имеет хороший встроенный шаблон синглтона.
static class Foo
Если вам нужно что-то более интересное, скорее всего, ваш новый синглтон будет отличаться настолько, что ваш общий шаблон окажется бесполезным.
РЕДАКТИРОВАТЬ: Под "что-нибудь более интересным" я в том числе наследования. Если вы можете наследовать от синглтона, он больше не является синглтоном.