private void InitializeEventInfo(TEventSource eventSource) { this.eventInfo = TEventSourceType.GetRuntimeEvent(this.EventName); if (this.eventInfo == null) { throw new ArgumentException($"The type ${eventSource.GetType().FullName} does not contain an event named {this.EventName}."); } // A method cannot be cast into EventHandler<TEventArgs> when TEventArgs inherits from EventArgs. this.eventHandler = OnEventMethodInfo.CreateDelegate(this.eventInfo.EventHandlerType, this); }
private void InitializeEventInfo(TEventSource eventSource) { this.eventInfo = TEventSourceType.GetRuntimeEvent(this.EventName); if (this.eventInfo == null) { throw new ArgumentException($"The type ${eventSource.GetType().FullName} does not contain an event named {this.EventName}."); } bool isClassicHandler = EventHandlerTypeInfo.IsAssignableFrom(eventInfo.EventHandlerType); this.eventHandler = isClassicHandler ? (EventHandler)this.OnEvent : CreateGenericEventHandler(eventInfo, this.OnEvent); }