有人使用过带有 asp.net mvc 3.0 的新 DI 功能的 Structuremap 吗?如果是这样,您可以发布一些示例代码或一些有用的示例链接吗?在尝试学习 ASP.NET MVC 3 时,我试图确保使用所有"new"功能,并且正在努力集成 IoC 容器。
最佳答案
正如其他人提到的,您想查看 Common Service Locator (CSL),它是围绕任何容器(您选择的任何容器)的简单服务解析外观。
MVC3 内部大量使用新的 IDependencyResolver接口(interface)有点像 CSL,但在 ASP.NET MVC 上下文中。好处是,如果您已经在使用 CSL,那么您可以将其设置为 MVC 的依赖解析器。
本主题对于任何容器都同样重要,而不是特定于 StructureMap。
那么那里发生了什么:
- 您提供所有必要的容器注册(如果是 StructureMap,最好通过注册表 DSL);
- 您会得到StructureMap adapter用于公共(public)服务定位器;
- 您(可选 - 如果您需要 CSL 和 DependencyResolver)将 StructureMap 适配器注册为当前服务定位器:
ServiceLocator.SetLocatorProvider(() => yourStructureMapAdapter)
- 您将 CSL(由 StructureMap 支持)注册为 MVC DependencyResolver:
DependencyResolver.SetResolver(yourStructureMapAdapter)
- MVC3 自动通过 IDependencyResolver 连接所有内容内部接口(interface)(使用所有 StructreMap DI Autowiring 功能)。
除了 MVC3 内置的 IoC 功能之外,还可以最大程度地利用 IoC 工具的强大功能(例如,使用 StructureMap 中提供的程序集扫描)。
关于asp.net-mvc - 结构图和 MVC 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4775561/