asp.net-mvc - 结构图和 MVC 3.0

标签 asp.net-mvc tdd asp.net-mvc-3 structuremap ioc-container

有人使用过带有 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/

相关文章:

asp.net-mvc - 不使用身份的外部登录 asp.net core 2.0

c# - 如何在 LINQ select 语句中使用 Lambda

asp.net-mvc - 使用 catchall 通配符重定向到 Controller (但使用不同的主 Controller )

asp.net-mvc - 返回 new EmptyResult() VS 返回 NULL

objective-c - iOS7 中的测试驱动开发从哪里开始?

unit-testing - MS Fakes 的 TDD

refactoring - 红色、绿色、重构 : refactor after each test case, 还是充实整个测试套件?

html - 无法在 html 输入文本框中插入空格

ASP.net MVC : JQGrid - display checkbox for boolean column

asp.net - Azure Web 角色 - 长时间运行的请求(负载均衡器超时?)