通过Ninject将对象InRequestScope注入ValidationAttribute会引发错误

时间:2013-08-29 16:06:02

标签: asp.net-mvc-4 ninject

Ninject现在可以将属性注入ValidationAttribute(https://github.com/ninject/ninject.web.mvc/wiki/Injection-of-validators)。它工作得很好,直到绑定对象InRequestScope()。

所以,这就是我认为正在发生的事情。 ValidationAttribute在ASP.NET中实现为单例。

  1. 第一次实例化属性时,Ninject会正确填充注入的属性。
  2. 当前请求结束时处理已注入的对象
  3. 在下一个请求时,访问inject属性会抛出错误,因为它已经被处理掉了。
  4. Ninject不会尝试填充注入的属性,因为验证属性永远不会重新实例化。

    这有意义吗?有没有人有任何解决方法的想法?

1 个答案:

答案 0 :(得分:2)

这是正确的。

如果您确实需要请求范围中的依赖项,那么您必须为依赖项注入factory而不是依赖项本身,并在评估期间使用它来获取新实例。