AOP を理解するには、実際にプログラミングした方が理解し易いと思うので、AOPアライアンスの Javadoc AOP Alliance specifications を元に、インタフェースを作成してみようと思います。が、その前にまず知っておきたいのは、VB.NET で処理の横取り(インターセプト)はどうすれば良いのか?です。
正直、全く思いつきません・・・
と言うより、そんなこと出来るの?って感じです。
あるクラスのあるメソッドを実行したときに、あたかもそのメソッドを実行してるかのごとく別の処理を割り込ますわけで・・・


そういえば、デザインパターンに Proxy パターンがあったなと思い出したので proxy で調べてみると、デザインパターンを実装するのではなく、.NET の透過プロキシってのが処理割り込みできるらしい。
RealProxy クラス (System.Runtime.Remoting.Proxies)
簡単に言うと、
この RealProxy を継承したクラスを作成する。
そのクラスにある型(Type)を指定してインスタンス生成(New)を任せる。
生成されたインスタンスは中身は違ってもある型(Type)と同じようにメソッドを持つ事になる。
なので、使う側は意識しないって事みたい。
とりあえずメソッドへの処理割り込み方法は分かったので、インタフェースを定義してみる。
Spring.NET と S2Container.NET はメソッドに対してインターセプトするみたい。
Aopアプライアンスのドキュメントでは、MethodInterceptor が存在してます。
これらを参考にして、現段階で完全に不要と思われるものは無視して定義すると下図の様になった。

AopStep1


IMethodInterceptor の基本クラスにあたる、IInterceptor や IAdvice は特に必要ないように思えますが、とりあえず定義してあります。
次はこれらのインタフェースの実体を実装してみます。

関連記事

VB.NET でアスペクト指向
VB.NET でアスペクト指向 (2)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*