public Handler(RoqueEventBroadcaster broadcaster, Type sourceType, object source, string eventName) { Broadcaster = broadcaster; Source = source; SourceType = sourceType; EventInfo = SourceType.GetEvent(eventName); if (EventInfo == null) { if (sourceType.IsInterface) { // search event in parent interfaces foreach (var parentInterface in sourceType.GetInterfaces()) { EventInfo = parentInterface.GetEvent(eventName); if (EventInfo != null) { break; } } } if (EventInfo == null) { throw new Exception(string.Format("Event not found. Type: {0}, EventName: {1}", sourceType.FullName, eventName)); } } var handlerDelegate = Delegate.CreateDelegate(EventInfo.EventHandlerType, this, _OnEventType, true); EventInfo.AddEventHandler(source, handlerDelegate); }
public Handler(RoqueEventBroadcaster broadcaster, Type sourceType, object source, string eventName) { Broadcaster = broadcaster; Source = source; SourceType = sourceType; EventInfo = SourceType.GetEvent(eventName); var handlerDelegate = Delegate.CreateDelegate(EventInfo.EventHandlerType, this, _OnEventType, true); EventInfo.AddEventHandler(source, handlerDelegate); }