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исключения будут возникать исключения.

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