私は現在、Autofac-1.4.5.676、autofac contrib、およびCastleDynamicProxy2を使用して少し実験を行っています。目標は、特定のインターフェイスの特定のメソッド への呼び出しをインターセプトできる粗粒度のプロファイラーを作成することです。
問題:選択部分を除いて、すべてが完全に機能しています。私は間違っている可能性がありますが、インターセプターをIProxyGenerationHook実装と組み合わせる必要があると思いますが、これを行う方法がわかりません。
私のコードは次のようになります。
インターセプトおよびプロファイリングされるインターフェース( Update()メソッドのプロファイリングのみに関心があることに注意してください)
public interface ISomeSystemToMonitor
{
void Update(); // this is the one I want to profile
void SomeOtherMethodWeDontCareAboutProfiling();
}
これで、システムをコンテナーに登録するときに、次のことを行います。
// Register interceptor gubbins
builder.RegisterModule(new FlexibleInterceptionModule());
builder.Register<PerformanceInterceptor>();
// Register systems (just one in this example)
builder.Register<AudioSystem>()
.As<ISomeSystemToMonitor>)
.InterceptedBy(typeof(PerformanceInterceptor));
コンテナーから引き出されたすべてのISomeSystemToMonitorインスタンスは、Updateメソッドだけでなく、すべてのメソッドをインターセプトするという事実を除いて、必要に応じてインターセプトおよびプロファイリングされます。
では、これを拡張してUpdate()以外のすべてのメソッドを除外するにはどうすればよいですか?私が言ったように、「ProfileInterceptorには、このIProxyHookGeneratorの実装を使用する」ことをコンテナーに通知する方法がわかりません。
すべての助けに感謝します、乾杯!また、現在autofac2.xにアップグレードできないことに注意してください。私は1で立ち往生しています。