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

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