亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

PostSharpがいい感じ。

http://www.sharpcrafters.com/

StackOverflowで紹介されていたC#向けAOP。こいつはDIとか難しいことは全然考えない、メソッドインジェクター専用。

使い方は本当に簡単で、ライブラリをインクルードしたら、まずは属性を作る。
んで、属性の中で、OnEntryとOnExitをオーバーライドしておく。と。

   public sealed class TraceAttribute : OnMethodBoundaryAspect
   {
        public override void OnEntry(MethodExecutionArgs args)
        {
           //何か実装
        }
        public override void OnExit(MethodExecutionArgs args)
        {
            //何か実装
        }
   }

あとは、インジェクトしたいクラスかメソッドにこの属性をつけておく。

[TraceAttribute("Main")]
 class Program
 {
   //クラスだと持ってるメソッド全部にインジェクションされる。
 }

MethodExecutionArgsには、そのメソッドを途中で止めたりとかも設定できたりする。
これ、上手く使えば機能制限の解除に使えないかね?