System.Rtti.TVirtualMethodInterceptor

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

System.TObjectTVirtualMethodInterceptor

Delphi

TVirtualMethodInterceptor = class

C++

class PASCALIMPLEMENTATION TVirtualMethodInterceptor : public System::TObject

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.

Siehe auch

Codebeispiele