Exemplo n.º 1
0
        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);
        }