我目前正在处理大量的绑定,这些绑定是在ASP.NET Web API解决方案中设置的,而且大多数情况下,WhenInjectedInto与Ninject一起使用。 要应用我的日志记录方面,我必须添加到每个绑定
.Intercept().With<LoggingAspect>();
例如
Bind<IMyServiceClass>().To<MyService>()
.WhenInjectedInto<SomeOtherClass>()
.Intercept().With<LoggingAspect>();;
这有点令人讨厌,特别是当我想在拦截和非拦截之间切换时,我有超过100个像这样的绑定。
有没有办法将loggingaspect拦截器绑定到ninject中保存的所有绑定?
或者我应该将拦截器应用于所有内容,然后让拦截器进行检查并运行拦截代码?
答案 0 :(得分:2)
自从我处理Ninject以来已经有一段时间了,但是可以在内核级别进行拦截:
kernel.Intercept(context => true).With<LoggerInterceptor>();
这将适用于内核中注册的所有服务。
您需要从NuGet安装Ninject.Extensions.Interception.DynamicProxy
或Ninject.Extensions.Interception.Linfu
。