您如何将依赖解析器隔离到MVC3中的一个区域?

时间:2010-11-18 03:24:37

标签: asp.net asp.net-mvc dependency-injection asp.net-mvc-areas

最近通过NuGet隔离东西并插入它的精神,有没有人知道你如何将依赖解析器限制在MVC3中的一个区域?将视图和控制器限制在一个区域是很容易的,但除非我没有看到明显的钩子,否则看起来设置IDependencyResolver是不可避免的全局范围。我想将它限制在一个区域。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

IDependencyResolver是全球性的设计。如果您想按区域改变行为,您应该查看可以根据上下文对象做出决策的各种* Activator类型和接口。

你具体想做什么?

答案 1 :(得分:1)

我建议使用Common Service Locator。基本上每个区域都可以为他们的特定容器设置CSL。

您可能需要在依赖项解析程序之间创建一个适配器,或者完全放弃它并严格使用CSL。

一般来说,我不支持在一系列商业应用中使用CSL。它的目的是使使用DI(如MassTransit)的开源组件更容易集成到业务线应用程序中。然而,这可能是一个例外。

另外,请查看mvccontrib可移植区域。它专为此类事物而设计。

答案 2 :(得分:0)

你想要做的事听起来像个坏主意。依赖注入的关键是你可以隔离特定的依赖关系,而不是让你的代码关注它们来自何处。

如果您尝试将某些对象或类限制为某个MVC区域,请配置您的依赖注入器以在正确的时间调用正确的。

有关您尝试做的更多细节将有助于产生更好的答案。