【问题标题】:Can StructureMap be configured so that one can use different .config settings based on whether the project was built in debug or release mode?是否可以配置 StructureMap,以便可以根据项目是在调试模式还是发布模式下构建使用不同的 .config 设置?
【发布时间】:2010-05-31 17:50:26
【问题描述】:

我知道在 StructureMap 中,当我想将特定参数传递给对象的构造函数时,我可以从我的 *.config 文件(或它们引用的文件)中读取数据。

ForRequestedType<IConfiguration>()
                .TheDefault.Is.OfConcreteType<SqlServerConfiguration>()
                .WithCtorArg("db_server_address")
                .EqualToAppSetting("data.db_server_address")

但我想做的是从调试模式下的一个配置设置和发布模式下的另一个配置设置中读取。

当然我可以用#if DEBUG 包围.EqualToAppSetting("data.db_server_address"),但由于某种原因,当我把它们放进去时,这些陈述让我有点畏缩。我想知道是否有办法用StructureMap 库本身。

那么我可以根据项目是在调试模式还是发布模式下为我的对象提供不同的设置吗?

【问题讨论】:

    标签: structuremap ioc-container configuration-files web-config


    【解决方案1】:

    StructureMap 没有内置检测“调试”或“发布”模式。

    但是,当您通过其 DSL 以编程方式配置 StructureMap(在注册表中,或在容器上调用 Initialize() 或 Configure())时,您使用的是 C# 语言。你可以做任何 C# 允许的事情。所以你的问题变成了“c#有没有办法在调试模式下有条件地以不同的方式运行一些代码”,最明显的答案可能是让你感觉不好的条件编译指令。

    【讨论】:

    • 很公平,我很好奇您是否曾经在结构映射配置代码中使用条件编译器指令?谢谢
    • 不,我更喜欢使用更外部可见的设置来切换配置。要么阅读 web.config 中的编译“调试”设置(它由某些属性公开),要么阅读 appSetting。这样,无论代码是如何编译的,我都可以轻松地打开或关闭它。
    猜你喜欢
    • 2013-05-09
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多