在最近通过NuGet隔离和插入的精神下,有没有人知道如何在MVC3中将依赖解析器限制在一个区域?将视图和控制器限制在一个区域内很容易,但除非我没有看到明显的钩子,否则设置IDependencyResolver似乎不可避免地具有全局范围。我想把它限制在一个区域内。
有什么建议吗?
发布于 2010-11-18 13:25:37
IDependencyResolver在设计上是全球性的。如果你想改变不同区域的行为,你应该看看各种*Activator类型和接口,它们可以根据上下文对象做出决定。
你具体想做什么?
发布于 2010-11-19 01:58:32
为此,我建议使用通用服务定位器。基本上,每个区域都可以为其特定的容器设置CSL。
您可能需要在依赖解析器之间创建一个适配器,或者完全放弃它并严格使用CSL。
一般来说,我不支持在业务应用程序中使用CSL。它的目的是让使用DI的开源组件(如MassTransit)更容易集成到业务应用程序中。然而,这可能是一个例外。
另外,请查看mvccontrib便携区域。它就是为这类事情设计的。
发布于 2010-11-18 14:58:54
你想做的事情听起来像是个坏主意。依赖项注入的要点是,您可以隔离特定的依赖项,而不必让代码关心它们来自何处。
如果您试图将某些对象或类限制在某个MVC区域,请配置您的依赖项注入器,以便在正确的时间调用适当的对象或类。
关于你正在尝试做什么的更多细节将有助于生成更好的答案。
https://stackoverflow.com/questions/4211407
复制相似问题