RoutedEventArgs.InvokeEventHandler(Delegate, Object) Methode

Definition

Ermöglicht beim Überschreiben in einer abgeleiteten Klasse das typspezifische Aufrufen von Ereignishandlern, wodurch die Effizienz gegenüber der Basisimplementierung verbessert werden kann.

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)

Parameter

genericHandler
Delegate

Die aufzurufende generische Handler- bzw. Delegatimplementierung.

genericTarget
Object

Das Ziel, für das der bereitgestellte Handler aufgerufen werden soll.

Beispiele

Der folgende Pseudocode veranschaulicht ein grundlegendes Muster, das für die Implementierung verwendet werden kann. MyRoutedEventHandler Hier ist eine Unterklasse von 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

Hinweise

Die Basisimplementierung enthält Reflektion, um den richtigen Handler für jeden Fall zu bestimmen, in dem der Handler nicht wörtlich RoutedEventHandlerist, und dieser Reflektionsschritt hat einige Leistungsfolgen. Aufrufe können effizienter gestaltet werden, indem sie sich nicht auf Reflexion verlassen. Dies ist das Szenario, das dazu führt, dass diese Methode für jede Klasse von Routingereignisargumenten verfügbar ist, die sie überschreiben möchten. Implementierungen sollten nicht die Basis für diese Methode aufrufen, da Ihre Implementierung bereits für das Aufrufen der typsicheren Handler zuständig sein sollte.

Hinweise für Vererber

Diese Methode soll von abgeleiteten Ereignisdatenklassen überschrieben werden, um einen effizienteren Aufruf ihrer Delegaten zu ermöglichen. Die Implementierung sollte die bereitgestellte genericHandler in den typspezifischen Delegaten umwandeln und dann diesen Handler aufrufen.

Die Standardimplementierung versucht, den bereitgestellten Handler aufzurufen, und versucht, ihn in RoutedEventHandlerzu umwandeln. Wenn entweder genericHandler oder genericTarget als nullangegeben wird, werden Ausnahmen ausgelöst.

Gilt für: