1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- using System;
- namespace ET
- {
- public abstract class ConfigSingleton<T>: ProtoObject, ISingleton where T: ConfigSingleton<T>, new()
- {
- [StaticField]
- private static T instance;
- public static T Instance
- {
- get
- {
- return instance ??= ConfigComponent.Instance.LoadOneConfig(typeof (T)) as T;
- }
- }
- void ISingleton.Register()
- {
- if (instance != null)
- {
- throw new Exception($"singleton register twice! {typeof (T).Name}");
- }
- instance = (T)this;
- }
- void ISingleton.Destroy()
- {
- T t = instance;
- instance = null;
- t.Dispose();
- }
- bool ISingleton.IsDisposed()
- {
- throw new NotImplementedException();
- }
- public override void AfterEndInit()
- {
- }
- public virtual void Dispose()
- {
- }
- }
- }
|