このようなものはおそらくあなたのために働くでしょう:
キャッスル プロキシ インターセプタを作成します。
public class LoggingInterceptor : IInterceptor
{
private readonly IMyLogger _logger;
public LoggingInterceptor(IMyLogger logger) { _logger = logger; }
public void Intercept(IInvocation invocation)
{
_logger.Log("Before calling " + invocation.Method);
invocation.Proceed();
_logger.Log("After calling " + invocation.Method);
}
}
IFoo
これを SM 構成に登録して、すべてをプロキシでラップします。
var proxyGenerator = new ProxyGenerator();
c.For<IFoo>().Use<Foo>();
c.For<IFoo>()
.EnrichAllWith(instance =>
proxyGenerator.CreateInterfaceProxyWithTarget<IFoo>(instance,
new LoggingInterceptor(new MyLogger())));
のすべてのインスタンスの任意のメソッドへのすべての呼び出しは、IFoo
によってインターセプトされるようになりましたLoggingInterceptor
。もちろん、インスタンスを調べることで、ログに記録する呼び出しをフィルタリングできます。