public void Subscribe <TEventArgs>(Action <TEventArgs> callback) where TEventArgs : IEventArgs { var dynamicEventHandler = new DynamicEventHandler <TEventArgs>(callback); var eventArgsType = typeof(TEventArgs); if (!events.ContainsKey(eventArgsType)) { events.Add(eventArgsType, new List <Action <object> >()); } events[eventArgsType].Add(dynamicEventHandler.Handle); }
public IEnumerator CreateYieldInstruction <TEventArgs>() where TEventArgs : IEventArgs { var dynamicEventHandler = new DynamicEventHandler <TEventArgs>(); var eventArgsType = typeof(TEventArgs); if (!events.ContainsKey(eventArgsType)) { events.Add(eventArgsType, new List <Action <object> >()); } events[eventArgsType].Add(dynamicEventHandler.Handle); do { yield return(dynamicEventHandler.Result); }while (!dynamicEventHandler.IsCompleted); }