System.Rtti.TVirtualMethodInterceptor
Delphi
TVirtualMethodInterceptor = class
C++
class PASCALIMPLEMENTATION TVirtualMethodInterceptor : public System::TObject
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
class | public | System.Rtti.pas System.Rtti.hpp |
System.Rtti | System.Rtti |
説明
特定のクラス型の指定されたインスタンスに対する仮想メソッド呼び出しを ユーザーが動的にインターセプトできるようにします。
TVirtualMethodInterceptor は、実行時に派生クラスを動的に作成し、上位クラスのすべての仮想メソッドをオーバーライドさせます。 そのために、新しい仮想メソッド テーブルを作成して、呼び出しをインターセプトして引数を集めるスタブをそこに追加します。 呼び出しはすべて、TVirtualMethodInterceptor クラスの次の一連のイベントを通じてリダイレクトされます: OnBefore、OnAfter、OnException。これらのイベントの実装によって、以下のようなメソッド実行の進め方を制御できます。
- 継承したメソッドを呼び出すかどうか。
- 引数や戻り値を変更するかどうか。
- 継承した実装で例外が発生した場合に、派生クラスの実装でそれを出力しないようにするか。
この機能は、テスト用のモック オブジェクト、リモーティング用のプロキシなど、アスペクト指向ソリューションを実装するのに役立ちます。