/// <summary> /// Extracts the event handler details such as event filter. /// </summary> /// <param name="eventHandler">The event handler delegate.</param> /// <param name="eventFilter">The event filter.</param> private void ExtractEventHandlerDetails(ref Delegate eventHandler, ref IEventFilter eventFilter) { if (eventHandler == null || eventHandler.Method == null) { return; } // handle attached event filters, if any if (eventHandler.Target is IFilteredEventHandler) { var filtered = eventHandler.Target as IFilteredEventHandler; eventHandler = filtered.EventHandler; eventFilter = filtered.EventFilter; } // handle special case: session-bound events var parameters = eventHandler.Method.GetParameters(); if (parameters.Length == 2 && typeof(SessionEventArgs).IsAssignableFrom(parameters[1].ParameterType)) { // if SessionEventFilter is already attached, do not create a new filter if (eventFilter == null || !eventFilter.Contains <SessionEventFilter>()) { var sessionFilter = new SessionEventFilter(_sessionID); eventFilter = sessionFilter.Combine(eventFilter); } } }
/// <summary> /// Extracts the event handler details such as event filter. /// </summary> /// <param name="eventHandler">The event handler delegate.</param> /// <param name="eventFilter">The event filter.</param> private void ExtractEventHandlerDetails(ref Delegate eventHandler, ref IEventFilter eventFilter) { if (eventHandler == null || eventHandler.Method == null) { return; } // handle attached event filters, if any if (eventHandler.Target is IFilteredEventHandler) { var filtered = eventHandler.Target as IFilteredEventHandler; eventHandler = filtered.EventHandler; eventFilter = filtered.EventFilter; } // handle special case: session-bound events var parameters = eventHandler.Method.GetParameters(); if (parameters.Length == 2 && typeof(SessionEventArgs).IsAssignableFrom(parameters[1].ParameterType)) { // if SessionEventFilter is already attached, do not create a new filter if (eventFilter == null || !eventFilter.Contains<SessionEventFilter>()) { var sessionFilter = new SessionEventFilter(_sessionID); eventFilter = sessionFilter.Combine(eventFilter); } } }