c# - 基于 app.config 值的不同 app.config appSettings

标签 c# .net configuration config app-config

我有 app.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <appSettings>       
        <!--One set of properties-->
        <add key="Condition" value="A"/>
        <add key="DependingPropertyA" value="B"/>
        <add key="DependingPropertyB" value="C"/>
        <!--Another set of properties-->
        <add key="Condition" value="B"/>
        <add key="DependingPropertyA" value="D"/>
        <add key="DependingPropertyB" value="E"/>
    </appSettings>
</configuration>

所以我想 if Condition == A 定义一组属性,if Condition == B - 不同的属性集,这样当我在 A 和 B 之间切换时,我不需要更改所有其他属性。 可能吗?

最佳答案

如果每个“条件”(也许是环境?)的属性名称都相同,那么您可以通过一些编码技巧来做到这一点:

(应用程序配置:)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>       

    <!--Condition 'selector', change value to 'CondB' when you want to switch-->
    <add key="Condition" value="CondA"/>

    <add key="CondA.DependingPropertyA" value="B"/>
    <add key="CondA.DependingPropertyB" value="C"/>
    <add key="CondB.DependingPropertyA" value="D"/>
    <add key="CondB.DependingPropertyB" value="E"/>
  </appSettings>
</configuration>

然后,假设在您的 C# .NET 代码中:

string keyPrepend = System.Configuration.ConfigurationManager.AppSettings["Condition"];

string propAValue = System.Configuration.ConfigurationManager.AppSettings[String.Format("{0}.{1}", keyPrepend, "DependingPropertyA")];
string propBValue = System.Configuration.ConfigurationManager.AppSettings[String.Format("{0}.{1}", keyPrepend, "DependingPropertyB")];

这让您可以根据单个条件键的值切换要使用的键/值集。

关于c# - 基于 app.config 值的不同 app.config appSettings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29383257/

相关文章:

c# - 如何将变量值插入到 server 2008 表中

c# - 如何将字符串转换为键

c# - 如何覆盖 ToString() 并实现泛型?

Php7-fpm 未在 Centos7 中运行

c# - 使用 MsBuild 命令行执行单元测试

javascript - 单击下拉列表 MVC 4 时显示/隐藏

Apache 服务器 ubuntu 10.10 返回要下载的 PHTML 文件而不是 php 文件

configuration - Ansible-playbook:直接运行处理程序

c# - 具有通用类型的 MS CRM 自定义工作流事件输出

.net - 在 Linq-to-SQL 中模拟多表继承