/// <summary> /// Atempts to forward the passed event to appropriate /// handler inside current class /// </summary> /// <param name="ev">The event</param> /// <param name="source">The emmiting object</param> /// <param name="handler">Object to handler the event</param> public static void Notify(this IEventHandler handler, Event ev, IEventEmmiter source) { if (handler.GetType().GetMethod("Handle" + ev.Name) != null) { // C# WTF? handler.GetType().GetMethod("Handle" + ev.Name).Invoke(handler, new object[] { ev, source }); } else { throw new System.NotImplementedException("This object doesn't have appropriate handler methods for event " + ev.Name); } }
/// <summary> /// Triggers passed event at all registred handlers /// </summary> /// <param name="ev">The event</param> public void FireEvent(Event ev, IEventEmmiter source) { foreach (IEventHandler handler in _handlers) { handler.Notify(ev,source); } }