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