RoutedEventArgs.InvokeEventHandler(Delegate, Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wenn sie in einer abgeleiteten Klasse überschrieben werden, können Ereignishandler auf typspezifische Weise aufgerufen werden, wodurch die Effizienz bei der Basisimplementierung erhöht 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 generische Handler-/Delegatimplementierung, die aufgerufen werden soll.
- genericTarget
- Object
Das Ziel, für das der bereitgestellte Handler aufgerufen werden soll.
Beispiele
Im Folgenden finden Sie pseudocode, der ein einfaches Muster veranschaulicht, 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 Spiegelung, um den richtigen Handler für jeden Fall zu bestimmen, in dem der Handler nicht wörtlich RoutedEventHandlerist, und dieser Spiegelungsschritt hat einige Leistungsfolgen. Aufrufe können effizienter gestaltet werden, indem sie sich nicht auf Reflexion verlassen. Dies ist das Szenario, in dem diese Methode für alle Routingereignisargumente verfügbar ist, die diese Methode überschreiben möchten. Implementierungen sollten die Basis für diese Methode nicht aufrufen, da Ihre Implementierung bereits für das Aufrufen der Typen sicherer Handler verantwortlich sein sollte.
Hinweise für Vererber
Diese Methode soll von abgeleiteten Ereignisdatenklassen außer Kraft gesetzt werden, um einen effizienteren Aufruf ihrer Stellvertretungen zu ermöglichen. Die Implementierung sollte die bereitgestellte genericHandler Version in den typspezifischen Delegaten umwandeln und dann diesen Handler aufrufen.
Die Standardimplementierung versucht, den bereitgestellten Handler aufzurufen, und versucht, ihn als RoutedEventHandlerzu umwandeln. Wenn eine oder mehrere genericHandler Ausnahmen angegeben genericTargetwerden, null werden Ausnahmen ausgelöst.