潜伏了几个月,决定跳进一个问题。我对温莎和IoC一般都是新手。我可以让温莎与我的MVC2项目一起工作没有问题。我正在开发的项目是使用新的区域概念在一个MVC2项目下的多个应用程序的“门户”。在这种情况下,每个区域实际上都是“门户”内的单独应用程序。我们这样做是为了有效地共享大量公共代码,视图,身份验证和跨应用程序功能。我们的许多应用程序彼此链接,因此在讨论它之后将它们组合到一个项目中是有意义的。
我想知道怎么做实际上允许不同的区域注入不同的具体类?在我有限的理解中,Application_Start正在管理构建容器并将其指定为控制器工厂。我不一定想在应用程序级别进行所有注入。我们有一个配置系统,我们在每个区域的根目录下都有一个config.xml,这些设置会覆盖任何根设置。我希望通过区域的config.xml(类似于Webforms web.config的继承,其中较低文件夹中的配置覆盖父文件夹中的设置)读取每个区域的注入来继续这种趋势。
示例:我将有一个ILogHandler,它需要一个不同的具体实现,具体取决于我所在的应用程序区域。所以我需要根据应用程序中的位置注入不同的东西。
我可以使用工厂轻松完成这项工作,因为每个地区都可以拥有自己的工厂,但我正试图借此机会了解IoC及其优缺点。任何帮助,将不胜感激。
答案 0 :(得分:0)
仅供参考 - 您绝对不能拥有特定区域的安全代码。例如,根据当前区域注入[Authorize]属性的工厂或调用者可能会打开您的应用程序进行攻击。
将此与MyAreaBaseController进行对比,该区域中的所有控制器都必须是子类。 [授权]属性(和其他安全相关的代码)在这里是可以的,因为它们应用于类型并且独立于“区域”的任何概念。