using System; namespace Blue { public static class ICanSubscribeEventExtension { private static ITypeEventSystem _eventSystem; public static void SetEventSystem(ITypeEventSystem eventSystem) { _eventSystem = eventSystem; } public static IUnSubscribe SubscribeEvent(this ICanSubscribeEvent self, Action onEvent) where T : IEvent { return _eventSystem.SubscribeEvent(onEvent); } public static IChainEventUnSubscribe SubscribeChainEvent(this ICanSubscribeEvent self,Action onEvent) where T : IChainEvent where K:IEvent { return _eventSystem.SubscribeChainEvent(onEvent); } public static void UnSubscribeEvent(this ICanSubscribeEvent self, Action onEvent) where T : IEvent { _eventSystem.UnSubscribeEvent(onEvent); } public static void UnSubscribeChainEvent(this ICanSubscribeEvent self) where T:IChainEvent { _eventSystem.UnSubscribeChainEvent(); } public static void UnSubscribeEventFromChainEvent(this ICanSubscribeEvent self) where T : IChainEvent where K : IEvent { _eventSystem.UnSubscribeEventFromChainEvent(); } } }