Язык

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

Определение

При переопределении в производном классе предоставляет способ вызова обработчиков событий в определенном типе, что может повысить эффективность базовой реализации.

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

Вызываемая реализация универсального обработчика или делегата.

genericTarget
Object

Целевой объект, на котором должен вызываться предоставленный обработчик.

Примеры

Ниже приведен псевдокод, иллюстрирующий базовый шаблон, который можно использовать для реализации. MyRoutedEventHandler Ниже приведен подкласс 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, и этот шаг отражения имеет некоторые последствия производительности. Вызовы можно сделать более эффективными, не опираясь на отражение. Это сценарий, который мотивирует этот метод, доступный для любого класса аргументов перенаправленных событий, которые выбирают переопределение. Реализации не должны вызывать базу для этого метода, так как реализация уже должна отвечать за вызов безопасных обработчиков типов.

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

Этот метод предназначен для переопределения производными классами данных событий для обеспечения более эффективного вызова своих делегатов. Реализация должна привести предоставленный genericHandler делегат для конкретного типа, а затем вызвать этот обработчик.

Реализация по умолчанию попытается вызвать предоставленный обработчик, пытаясь привести его как RoutedEventHandler. genericHandler Если это или genericTarget указано какnull, будут возникать исключения.

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