Policy Injection Application Blockを2回試してみた感想は、Unityと相性悪そう。
ということでぐぐってみると、下のスレッドを見つけた。
http://www.codeplex.com/unity/Thread/View.aspx?ThreadId=38040
どうやらPolicy Injection Application Blockの設定をUnityのInterceptionに食わせることが出来るみたい。
早速やってみた。前までのプロジェクトのMainメソッドを下のように書き換えた。
class Program
{
static void Main(string[] args)
{
// Targetクラスのインスタンスを作成して
// var target = PolicyInjection.Create<Target>();
// 処理を呼び出す
// target.Greet();
IUnityContainer container = new UnityContainer();
container.AddNewExtension<Interception>();
container.Configure<Interception>().SetInterceptorFor<Target>(new TransparentProxyInterceptor());
var configSource = ConfigurationSourceFactory.Create();
var settings = (PolicyInjectionSettings)configSource.GetSection(PolicyInjectionSettings.SectionName);
settings.ConfigureContainer(container, configSource);
var target = container.Resolve<Target>();
target.Greet();
}
}
実行結果は、今までのと同じなので省略。
ちゃんと動いているけど、SetInterceptorForを型ごとに設定しないといけないのはUnityのInterceptionなので仕方ないのだろうか…。
MatchingRuleにマッチする奴は、自動的にTransparentProxyInterceptorを適用するとか出来ないのかな?