特定于环境的StructureMap配置?

时间:2017-10-02 16:23:57

标签: c# asp.net .net inversion-of-control structuremap

当我使用StructureMap 2.6时,我能够通过将PullConfigurationFromAppConfig设置为TRUE来从配置中提取配置数据。这有助于我根据构建配置覆盖实例。

在最新版本中,这似乎已不复存在。如何通过配置文件指定自定义实例,特别是web.config(我目前正在根据构建配置进行转换)。这可能吗?还有另一个支持这个的IoC框架吗?感谢。

1 个答案:

答案 0 :(得分:2)

从大多数DI容器中删除了XML支持,因为它被认为是配置容器的过时方式。 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
}

如果需要,您可以进行更多配置文件设置(甚至是您自己的配置部分),以使配置更加细化。