System.Rtti.TVirtualMethodInterceptor
Delphi
TVirtualMethodInterceptor = class
C++
class PASCALIMPLEMENTATION TVirtualMethodInterceptor : public System::TObject
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
class | public | System.Rtti.pas System.Rtti.hpp |
System.Rtti | System.Rtti |
Description
Permet à l'utilisateur d'intercepter dynamiquement les appels de méthodes virtuelles sur des instances spécifiées d'un type de classe particulier.
TVirtualMethodInterceptor crée une classe dérivée dynamiquement à l'exécution qui redéfinit chaque méthode virtuelle dans l'ancêtre. Ceci est accompli en créant une nouvelle table de méthodes virtuelles et en la remplissant par des stubs qui interceptent les appels et collectent les arguments. Chaque appel est redirigé via un ensemble d'événements sur la classe TVirtualMethodInterceptor : OnBefore, OnAfter et OnException. L'implémenteur de ces événements peut contrôler comment est traitée l'exécution de la méthode :
- Si la méthode héritée est appelée, ou pas.
- Si les arguments ou la valeur de retour doivent être modifiés.
- Si une exception déclenchée par l'implémentation héritée doit être supprimée dans l'implémentation dérivée.
Cette fonctionnalité peut être utilisée comme aide à l'implémentation d'objets fictifs pour les tests, de proxies pour l'accès distant, et de solutions similaires orientées aspect.
Voir aussi
- OnBefore
- OnAfter
- OnException
- Utilisation des intercepteurs de méthodes virtuelles
- Barry Kelly's blog