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.
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 null
angegeben wird, werden Ausnahmen ausgelöst.