如果通过 WebActivator 初始化 IoC 容器,则解决 Global.asax 中的依赖关系
在 ASP.NET MVC3 应用程序中,我通过 A 类 NinjectMVC3
初始化 Ninject IoC 容器,
[assembly : WebActivator.PreApplicationStartMethod( typeof (NinjectMVC3), "Start" )]
该类负责我的 IoC 容器 Kernel
初始化。
调用此函数后,所有通过构造函数变量声明可解析依赖项的控制器都可以很好地解析它们。
但我需要在 Global.asax
Application_Start
方法中使用已解析的依赖项,将其提供给我的一些自定义全局过滤器?在我的场景中,如何解决 Application_Start
中的依赖关系?
In an ASP.NET MVC3 application, I initialize a Ninject IoC container through a
[assembly : WebActivator.PreApplicationStartMethod( typeof (NinjectMVC3), "Start" )]
A class NinjectMVC3
is responsible for my IoC container Kernel
initialization.
After this is called, all controllers, that declare resolvable dependencies through a constructor variables get them resolved just fine.
But I need to use a resolved dependency in Global.asax
Application_Start
method, to feed it to some Custom Global Filters of mine? How can I resolve dependencies in Application_Start
in my scenario?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
DependencyResolver.Current.GetService()
You can use
DependencyResolver.Current.GetService<T>()
在这种情况下,您应该选择不同的方式。将依赖项直接注入到过滤器中,而不是首先将它们分配给全局 asax。这样你就可以同时解决两个问题:
Ninject.MVC3 扩展的文档显示了如何使用 Ninject 创建过滤器,以便您可以为它们进行构造函数注入:
https://github.com/ninject/ninject.web.mvc/wiki/Dependency-injection-for-filters
In this case you should choose a different way. Inject the dependencies directly to your filters instead of assigning them to the global asax first. This way you solve two problems at once:
The documentation of the Ninject.MVC3 extensions shows how you can create the filters using Ninject so that you can do constructor injection for them:
https://github.com/ninject/ninject.web.mvc/wiki/Dependency-injection-for-filters