using System; namespace KYFramework { public interface IAwakeSystem { Type Type(); } public interface IAwake { void Run(object o); } public interface IAwake { void Run(object o, A a); } public interface IAwake { void Run(object o, A a, B b); } public interface IAwake { void Run(object o, A a, B b, C c); } public abstract class AwakeSystem : IAwakeSystem, IAwake { public Type Type() { return typeof(T); } public void Run(object o) { this.Awake((T)o); } public abstract void Awake(T self); } public abstract class AwakeSystem : IAwakeSystem, IAwake { public Type Type() { return typeof(T); } public void Run(object o, A a) { this.Awake((T)o, a); } public abstract void Awake(T self, A worldInitSo); } public abstract class AwakeSystem : IAwakeSystem, IAwake { public Type Type() { return typeof(T); } public void Run(object o, A a, B b) { this.Awake((T)o, a, b); } public abstract void Awake(T self, A a, B b); } public abstract class AwakeSystem : IAwakeSystem, IAwake { public Type Type() { return typeof(T); } public void Run(object o, A a, B b, C c) { this.Awake((T)o, a, b, c); } public abstract void Awake(T self, A a, B b, C c); } }