RoutedEventArgs.InvokeEventHandler(Delegate, Object) Метод

Определение

При переопределении в производном классе предоставляет способ вызова обработчиков событий в зависимости от конкретного типа, что может повысить эффективность по сравнению с базовой реализацией.When overridden in a derived class, provides a way to invoke event handlers in a type-specific way, which can increase efficiency over the base implementation.

protected:
 virtual void InvokeEventHandler(Delegate ^ genericHandler, System::Object ^ genericTarget);
protected virtual void InvokeEventHandler (Delegate genericHandler, object genericTarget);
abstract member InvokeEventHandler : Delegate * obj -> unit
override this.InvokeEventHandler : Delegate * obj -> unit
Protected Overridable Sub InvokeEventHandler (genericHandler As Delegate, genericTarget As Object)

Параметры

genericHandler
Delegate

Универсальная реализация обработчика или делегата для вызова.The generic handler / delegate implementation to be invoked.

genericTarget
Object

Целевой объект, для которого нужно вызвать предоставленный обработчик.The target on which the provided handler should be invoked.

Примеры

Ниже приведен псевдокод, иллюстрирующий базовый шаблон, который можно использовать для реализации.The following is pseudocode that illustrates a basic pattern that can be used for implementation. Здесь MyRoutedEventHandler является подклассом RoutedEventHandler.Here, MyRoutedEventHandler is a subclass of RoutedEventHandler.

public class MyRoutedEventArgs : RoutedEventArgs 
{
// other members omitted
    protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) {
        MyRoutedEventHandler handler = (MyRoutedEventHandler) genericHandler;
        handler(genericTarget, this);
    }
}
Public Class MyRoutedEventArgs
    Inherits RoutedEventArgs
' other members omitted
    Protected Overrides Sub InvokeEventHandler(ByVal genericHandler As System.Delegate, ByVal genericTarget As Object)
        Dim handler As MyRoutedEventHandler = CType(genericHandler, MyRoutedEventHandler)
        handler(genericTarget, Me)
    End Sub
End Class

Комментарии

Базовая реализация включает отражение для определения правильного обработчика для любого случая, когда обработчик не RoutedEventHandlerбуквально, и этот шаг отражения имеет некоторые последствия для производительности.The base implementation incorporates reflection to determine the right handler for any case where the handler is not literally RoutedEventHandler, and this reflection step does have some performance consequences. Вызовы можно сделать более эффективными, не полагаясь на отражение.Invocations can be made more efficient by not relying on reflection. Это сценарий, который является мотивом того, что этот метод доступен для класса аргументов перенаправленного события, который выбирает его переопределение.This is the scenario that motivates this method being available for any routed event arguments class that choose to override it. Реализации не должны вызывать основание для этого метода, так как ваша реализация уже должна отвечать за вызов обработчиков типа "надежный".Implementations should not call the base for this method, because your implementation should already be responsible for invoking the type safe handlers.

Примечания для тех, кто наследует этот метод

Этот метод предназначен для переопределения производными классами данных событий, чтобы обеспечить более эффективный вызов своих делегатов.This method is intended to be overridden by derived event data classes to provide more efficient invocation of their delegates. Реализация должна привести предоставленный genericHandler к делегату конкретного типа, а затем вызвать этот обработчик.The implementation should cast the provided genericHandler to the type-specific delegate, and then invoke that handler.

Реализация по умолчанию будет пытаться вызвать предоставленный обработчик, пытаясь привести его как RoutedEventHandler.The default implementation will attempt to invoke the provided handler, attempting to cast it as RoutedEventHandler. Если в качестве nullуказан genericHandler или genericTarget, будут вызваны исключения.If either genericHandler or genericTarget is provided as null, exceptions will be raised.

Применяется к