RoutedEventArgs.InvokeEventHandler(Delegate, Object) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
En cas de substitution dans une classe dérivée, fournit un moyen d’appeler des gestionnaires d’événements d’une manière propre au type, ce qui peut améliorer l’efficacité par rapport à l’implémentation de 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)
Paramètres
- genericHandler
- Delegate
Implémentation de gestionnaire générique/délégué à appeler.
- genericTarget
- Object
Cible sur laquelle le gestionnaire fourni doit être appelé.
Exemples
Voici un pseudocode qui illustre un modèle de base qui peut être utilisé pour l’implémentation. MyRoutedEventHandler
Voici une sous-classe 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
Remarques
L’implémentation de base incorpore la réflexion pour déterminer le gestionnaire approprié pour tout cas où le gestionnaire n’est pas littéralement RoutedEventHandler, et cette étape de réflexion a des conséquences sur les performances. Les appels peuvent être rendus plus efficaces en ne s’appuyant pas sur la réflexion. Il s’agit du scénario qui motive cette méthode disponible pour toute classe d’arguments d’événement routé qui choisit de la remplacer. Les implémentations ne doivent pas appeler la base de cette méthode, car votre implémentation doit déjà être chargée d’appeler les gestionnaires de type sécurisés.
Notes pour les héritiers
Cette méthode est destinée à être remplacée par des classes de données d’événements dérivées pour fournir une appel plus efficace de leurs délégués. L’implémentation doit caster le délégué genericHandler
spécifique au type, puis appeler ce gestionnaire.
L’implémentation par défaut tente d’appeler le gestionnaire fourni, en tentant de la convertir en RoutedEventHandler. Si l’un ou genericTarget
l’autre genericHandler
est fourni en tant que null
, les exceptions seront levées.