System.Rtti.TVirtualMethodInterceptor
Delphi
TVirtualMethodInterceptor = class
C++
class PASCALIMPLEMENTATION TVirtualMethodInterceptor : public System::TObject
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
class | public | System.Rtti.pas System.Rtti.hpp |
System.Rtti | System.Rtti |
Beschreibung
Ermöglicht dem Benutzer das dynamische Abfangen virtueller Methodenaufrufe für angegebene Instanzen eines bestimmten Klassentyps.
TVirtualMethodInterceptor erstellt zur Laufzeit dynamisch eine abgeleitete Klasse, die alle virtuellen Methoden im Vorfahren überschreibt. Dies geschieht durch Erstellen einer neuen virtuellen Methodentabelle und Füllen dieser Tabelle mit Stubs, die Aufrufe abfangen und Argumente sammeln. Jeder Aufruf wird durch eine Reihe von Ereignissen für die Klasse TVirtualMethodInterceptor umgeleitet: OnBefore, OnAfter und OnException. Der Implementor dieser Ereignisse kann steuern, wie die Methodenausführung fortgesetzt wird:
- Ob die geerbte Methode aufgerufen wird oder nicht.
- Ob die Argumente oder der Rückgabewert geändert werden sollen.
- Ob eine von der geerbten Implementierung ausgelöste Exception in der abgeleiteten Implementierung unterdrückt werden soll.
Diese Funktionalität unterstützt die Implementierung von Scheinobjekten für Testzwecke, Proxies für das Remoting und ähnliche aspektorientierte Lösungen.