【问题标题】:ASP.NET MVC 3 RTM way of ServiceLocatorServiceLocator 的 ASP.NET MVC 3 RTM 方式
【发布时间】:2011-06-16 13:33:45
【问题描述】:

我对 IServiceLocator、IMvcServiceLocator、IDependencyResolver 等有点困惑……

ASP.NET MVC 3 RTM 定位服务的方式是什么?

我只需要访问类似的东西

T Resolve<T>();
T Resolve<T>(string key);

从任何地方(包括另一个程序集)。

编辑:示例

我的网络应用程序具有一种模块化架构。主题是模块的一个方面。每个主题都是一个单独的类库。不可能知道一个主题需要什么服务。例如。某些视图可能会显示标签云小部件,并且该小部件需要 TagRepository 的实例。

目前我正在将 Windsor 用于 IoC,我可以为模块公开该容器。但我真的不想让每个模块都依赖于 Windsor。我想知道标准 Mvc 库中是否有解决方案,因为模块无论如何都需要引用它。

【问题讨论】:

  • 你到底想做什么?
  • 我已经问了 10 个问题。其中 4 个:0 个答案,另一个 4:1 个答案,最后 2:2 个答案。如何接受不存在的答案?

标签: asp.net-mvc asp.net-mvc-3 dependency-injection inversion-of-control service-locator


【解决方案1】:

Asp.net Mvc 没有自己的 DI 容器。您必须实现 IDependencyResolver。看看这个问题:Castle Windsor Dependency Resolver for MVC 3

【讨论】:

  • IDependencyResolver 没有通过名称/键获取服务的方法。一些 beta 版本具有 IMvcServiceLocator 和 MvcServiceLocator bradwilson.typepad.com/blog/2010/07/…,但 RTM 中不存在这些。所以他们没有确切的替代品吗?
  • 我不记得那些接口是否相同...如果你读过第 5 部分,他说:对于将代码从 MVC 3 Preview 1 移植到 MVC 3 Beta 的开发人员,此接口替换IMvcServiceLocator.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多