c# - 特定于环境的 StructureMap 配置?

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

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

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

最佳答案

XML 支持已从大多数 DI 容器中删除,因为它被认为是配置容器的过时方式。 XML 非常脆弱,并且没有编译时类型检查,因此使用它配置应用程序往往很麻烦而不值得。

即使现在找到了支持XML的DI容器,以后也不一定会支持。

解决这个问题的方法当然是为您的用例添加许多您需要的条件配置设置。例如,您可以使用类似于

<appSettings>
    <add key="DIConfig" value="Test" />
    <!--<add key="DIConfig" value="Production" />-->
</appSettings>

然后在你的 composition root 中使用类似的东西

if (ConfigurationManager.AppSettings["DIConfig"] == "Test")
{
    // load test configuration
}
else if (ConfigurationManager.AppSettings["DIConfig"] == "Production")
{
    // load production configuration
}

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

关于c# - 特定于环境的 StructureMap 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46529644/

相关文章:

c# - 按一定顺序组合列表c#

c# - .NET 扩展性和 ASP.NET 之间的区别

c# - 无法在 ASP.NET MVC 上使用 ADAL for Office 365 REST API 静默验证用户

html - GridView 未显示在 asp.net 网页中

c# - 如何在运行时使用错误提供程序以及关联任何控件以进行验证

c# - 共享点 2010 "unhandled win32 exception occurred in W3WP.EXE"

c# - 为什么ControlBindingsCollection.Add的数据源是一个对象而不是INotifyPropertyChanged?

c# - 如何将控件绑定(bind)到DataGrid中的当前行?

c# - 按钮的单个 onclick 事件如何执行 2 个操作

c# - 在异步事件处理程序中返回字符串