EntLib4.1 での PIAB 仕様変更(2)

はじめに

先日に引き続き Policy Injection Application Block (以下 PIAB) の変更点を調べました。

変更点

EntLib4.1 では、メソッドのインターセプトを Unity がやってくれるようになりました。PIAB は Unity の機能を利用するだけです。

Unity を使ったメソッドのインターセプト方法

Microsoft.Practices.Unity.Interception を参照に追加し、例えば下記のようなコードを書けばOKです。

// DI コンテナを生成する。
IUnityContainer container = new UnityContainer();

// DI コンテナのインスタンス生成パイプラインを拡張する。
// インスタンスをラップしてメソッドをインターセプト可能にする処理が追加される。
container.AddNewExtension<Interception>();

// DI コンテナから取得するインスタンスインターセプトする方法を指定。
container.Configure<Interception>()
         .SetInterceptorFor<IAnimal>(new TransparentProxyInterceptor());

// 型を登録する。
container.RegisterType<IAnimal, Wankuma>("Wankuma");

// コンテナから取得した animal オブジェクトの、
// Cry メソッドはインターセプトされる。
var animal = container.Resolve<IAnimal>("Wankuma");
animal.Cry();

最後に

Unity だけでアスペクト指向プログラミングが可能になっています。PIAB の存在意義が・・・(;^_^A