.NETにおける、InterType

AOPのメソッドインターセプションを実現するのとは違い、Seasar2のInterTypeを.NET側では容易には実現できないだろう。ソースはまだ見ていないけれど、Seasar2javassistで既存の型を動的に拡張(アクセサを追加)していることは間違いない。それに習うとすると.NET側もSpring等と同様に、AOPの機能をSystem.Reflection.Emit名前空間のクラス、つまりはILのEmitにて行わなければならないと思われる。

異論もあると思うが、IntertypeはFieldInjection同様にオブジェクトのカプセル化を破る行為ともなるし、正直便利なのは認めるけれど気軽に実装するのは難しい。

と書いたものの、ある型に対して動的にメソッドを追加するのは、今に始まった型拡張の方法でもないし、プロトタイプベースのOOを実現できる動的な言語では、普通に行われている手法なのだし、自己責任の上でのカプセル化破りに抵抗を覚えない下地が出来ている現在では、大したことではないのかもしれない。