最近通过NuGet隔离东西并插入它的精神,有没有人知道你如何将依赖解析器限制在MVC3中的一个区域?将视图和控制器限制在一个区域是很容易的,但除非我没有看到明显的钩子,否则看起来设置IDependencyResolver是不可避免的全局范围。我想将它限制在一个区域。
有什么建议吗?
答案 0 :(得分:2)
IDependencyResolver
是全球性的设计。如果您想按区域改变行为,您应该查看可以根据上下文对象做出决策的各种* Activator类型和接口。
你具体想做什么?
答案 1 :(得分:1)
我建议使用Common Service Locator。基本上每个区域都可以为他们的特定容器设置CSL。
您可能需要在依赖项解析程序之间创建一个适配器,或者完全放弃它并严格使用CSL。
一般来说,我不支持在一系列商业应用中使用CSL。它的目的是使使用DI(如MassTransit)的开源组件更容易集成到业务线应用程序中。然而,这可能是一个例外。
另外,请查看mvccontrib可移植区域。它专为此类事物而设计。
答案 2 :(得分:0)
你想要做的事听起来像个坏主意。依赖注入的关键是你可以隔离特定的依赖关系,而不是让你的代码关注它们来自何处。
如果您尝试将某些对象或类限制为某个MVC区域,请配置您的依赖注入器以在正确的时间调用正确的。
有关您尝试做的更多细节将有助于产生更好的答案。