RoutedEventArgs.InvokeEventHandler(Delegate, Object) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wanneer deze wordt overschreven in een afgeleide klasse, biedt u een manier om gebeurtenis-handlers op een typespecifieke manier aan te roepen, waardoor de efficiëntie van de basis-implementatie kan worden verhoogd.
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)
Parameters
- genericHandler
- Delegate
De algemene handler/gedelegeerde implementatie die moet worden aangeroepen.
- genericTarget
- Object
Het doel waarop de opgegeven handler moet worden aangeroepen.
Voorbeelden
Hier volgt een pseudocode die een basispatroon illustreert dat kan worden gebruikt voor implementatie. Hier is MyRoutedEventHandler een subklasse van 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
Opmerkingen
De basisuitvoering bevat weerspiegeling om de juiste handler te bepalen voor elk geval waarin de handler niet letterlijk RoutedEventHandleris, en deze reflectiestap heeft wel enkele gevolgen voor de prestaties. Aanroepen kunnen efficiënter worden gemaakt door niet te vertrouwen op reflectie. Dit is het scenario waarmee deze methode wordt gemotiveerd voor elke klasse gerouteerde gebeurtenisargumenten die ervoor kiezen deze te overschrijven. Implementaties mogen de basis voor deze methode niet aanroepen, omdat uw implementatie al verantwoordelijk moet zijn voor het aanroepen van het type veilige handlers.
Notities voor overnemers
Deze methode is bedoeld om te worden overschreven door afgeleide gebeurtenisgegevensklassen om een efficiëntere aanroep van hun gemachtigden te bieden. De implementatie moet de opgegeven genericHandler naar de typespecifieke gemachtigde casten en die handler vervolgens aanroepen.
De standaard implementatie probeert de opgegeven handler aan te roepen, die probeert te casten als RoutedEventHandler. Als een van genericHandler beide of genericTarget als is opgegeven null, worden uitzonderingen gegenereerd.