namespace JNGame.Runtime.Util { public abstract class SingletonUtil where T : Singleton,new() { public static T Instance{ get{ if (Singleton.ins == null) { Singleton.ins = new T(); Singleton.ins.Init(); } return Singleton.ins; } } public static void Clean() { if(Singleton.ins != null) Singleton.ins.Clean(); Singleton.ins = null; } } public class Singleton { public static T ins; public virtual void Init(){} public virtual void Clean(){} } /// /// 通用单例。 /// /// 泛型T。 public class TSingleton where T : new() { private static T _instance; public static T Instance { get { if (null == _instance) { _instance = new T(); } return _instance; } } } }