【问题标题】:Environment-specific StructureMap configuration?特定于环境的 StructureMap 配置?
【发布时间】:2017-10-02 16:23:56
【问题描述】:
当我使用 StructureMap 2.6 时,通过将 PullConfigurationFromAppConfig 设置为 TRUE,我能够让它从配置中提取配置数据。这有助于我根据构建配置覆盖实例。
在最新版本中,这似乎不再存在。如何通过配置文件指定自定义实例,特别是web.config(我目前正在根据构建配置进行转换)。这可能吗?是否有另一个 IoC 框架支持这一点?谢谢。
【问题讨论】:
标签:
c#
asp.net
.net
inversion-of-control
structuremap
【解决方案1】:
XML 支持已从大多数 DI 容器中删除,因为它被认为是配置容器的过时方式。 XML 非常脆弱,并且没有编译时类型检查,因此使用它来配置应用程序往往比它的价值更麻烦。
即使你现在找到支持 XML 的 DI 容器,将来也不太可能支持。
解决此问题的方法当然是为您的用例添加许多您需要的条件配置设置。例如,您可以使用类似于
<appSettings>
<add key="DIConfig" value="Test" />
<!--<add key="DIConfig" value="Production" />-->
</appSettings>
然后在你的作文根中使用类似
if (ConfigurationManager.AppSettings["DIConfig"] == "Test")
{
// load test configuration
}
else if (ConfigurationManager.AppSettings["DIConfig"] == "Production")
{
// load production configuration
}
如果需要,您可以进行更多的配置文件设置(甚至您自己的配置部分),以使配置比这更细化。