A generic singleton
Taken from: http://andyclymer.blogspot.com/2008/02/true-generic-singleton.html Changed by Simon Hughes 20th Feb 2008 using System; using System.Reflection; // Use like this /* public class Highlander : Singleton<Highlander> { private Highlander() { Console.WriteLine("There can be only one..."); } } */ public class Singleton <T> where T : class { private static T instance; private static object initLock = new object (); public static T GetInstance() { if (instance == null ) { CreateInstance(); } return instance; } private static void CreateInstance() { lock (initLock) { if (instance == null ) { Type t = typeof (T); // Ensure there are no public constructors... ConstructorInfo [] ctors = t.GetConstructors(); if (ctors.Length > 0 ) ...