public class Singleton<T> where T : new() { public static T Instance { get { return SingletonCreator.instance; } } class SingletonCreator { internal static readonly T instance = new T(); } }
使用方法:
Singleton<ClassName>.Instance 就可以拿到单例的实例了。
解析:
通过where T : new() 对模板参数T约束了必须有可访问的无参构造函数,以保证SingletonCreator中构造不会出错。