public abstract class AbsSingle where T : class, new() { static public T Instance { get { return SingleHolder.instance; } } private static class SingleHolder { public static T instance; static SingleHolder() { instance = new T(); } } }