将ninject拦截器应用于多个绑定

时间:2014-09-18 15:26:22

标签: c# asp.net asp.net-web-api ninject

我目前正在处理大量的绑定,这些绑定是在ASP.NET Web API解决方案中设置的,而且大多数情况下,WhenInjectedInto与Ninject一起使用。 要应用我的日志记录方面,我必须添加到每个绑定

.Intercept().With<LoggingAspect>(); 例如

Bind<IMyServiceClass>().To<MyService>()
.WhenInjectedInto<SomeOtherClass>()
.Intercept().With<LoggingAspect>();; 

这有点令人讨厌,特别是当我想在拦截和非拦截之间切换时,我有超过100个像这样的绑定。

有没有办法将loggingaspect拦截器绑定到ninject中保存的所有绑定?

或者我应该将拦截器应用于所有内容,然后让拦截器进行检查并运行拦截代码?

1 个答案:

答案 0 :(得分:2)

自从我处理Ninject以来已经有一段时间了,但是可以在内核级别进行拦截:

kernel.Intercept(context => true).With<LoggerInterceptor>();

这将适用于内核中注册的所有服务。

您需要从NuGet安装Ninject.Extensions.Interception.DynamicProxyNinject.Extensions.Interception.Linfu