RoutedEventArgs.InvokeEventHandler(Delegate, Object) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Cuando se invalida en una clase derivada, proporciona una manera de invocar controladores de eventos de una forma específica del tipo, lo que puede aumentar la eficacia en la implementación base.
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)
Parámetros
- genericHandler
- Delegate
Implementación del controlador/delegado genérico que se va a invocar.
- genericTarget
- Object
El destino en el que se debe invocar el controlador proporcionado.
Ejemplos
A continuación se muestra el pseudocódigo que ilustra un patrón básico que se puede usar para la implementación. Aquí, MyRoutedEventHandler
es una subclase de 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
Comentarios
La implementación base incorpora reflexión para determinar el controlador adecuado para cualquier caso en el que el controlador no sea literalmente RoutedEventHandler, y este paso de reflexión tiene algunas consecuencias de rendimiento. Las invocaciones se pueden hacer más eficaces sin depender de la reflexión. Este es el escenario que motiva que este método esté disponible para cualquier clase de argumentos de evento enrutado que decida invalidarlo. Las implementaciones no deben llamar a la base para este método, ya que la implementación ya debe ser responsable de invocar los controladores seguros de tipos.
Notas a los desarrolladores de herederos
Este método está diseñado para invalidarse mediante clases de datos de eventos derivadas para proporcionar una invocación más eficaz de sus delegados. La implementación debe convertir el proporcionado genericHandler
en el delegado específico del tipo y, a continuación, invocar ese controlador.
La implementación predeterminada intentará invocar el controlador proporcionado, intentando convertirla como RoutedEventHandler. Si se proporciona o genericHandler
genericTarget
como null
, se producirán excepciones.