IL書換えの手段が欲しい

徒労に終わったIL Emitによるs2dotnetAOP機能ですが、一通り試してみて思ったのは透過Proxyによらないメソッドインターセプションを実現するためには"型の生成"ではなく"型の書換え"が必要だということです。

Sesar2ではcglib、最近の版ではjavassistを利用してJavaバイトコードを書換えていますがs2dotnetでもそれに相当するソフトウェアが必要だということですね。

iBatis.NetNHibernateなど、JavaのOSSプロジェクトから派生した.NETのフレームワークではDynamicProxyを使用しているのを見るとs2dotnetもDynamicProxyを採用するのも一つの案だと思います。特にASP.NETベースでs2dotnetを利用するケースを考えるとアセンブリを配置するのはIISの一ヶ所に限定されるので複数のアセンブリを使うことがそれほど不利には働かないでしょうし。(ただしDynamicProxyはILのEmitにより型の生成を行っているという点では(完成度は段違いですが)私が試した方法と基本的に同じです。)

私自身はスマートクライアント主体で使いたいんでアセンブリの数はこれ以上増やしたくないんのです。もっと手軽に使えるILの書換え手段は無いものかなぁ。