using System.Threading.Tasks; namespace Model { public interface IRegister { void Register(); } public abstract class MEvent: IRegister { public void Register() { World.Instance.GetComponent().Register(this.Run); } public abstract R Run(T t); } public abstract class MEventAsync : IRegister { public void Register() { World.Instance.GetComponent().RegisterAsync(this.Run); } public abstract Task Run(T t); } }