在配置值组之间切换

时间:2014-08-13 16:35:41

标签: .net configuration app-config

我的App.Config文件中有少量条目会根据我正在进行的测试类型而改变。有没有办法告诉应用程序要使用哪组设置?下面我嘲笑了一个我想到的App.Config例子。

<configuration>
  <appSettings>
    <TestingScenario name="Scenario1">
      <add key="ApiKey" value="XXXXXXXXXXXXXXXXXXX" />
      <add key="UserName" value="XXXXXXXXXXXXXXXXXXX" />
      <add key="TokenId" value="XXXXXXXXXXXXXXXXXXX" />
    </TestingScenario>
    <TestingScenario name="Scenario2">
      <add key="ApiKey" value="XXXXXXXXXXXXXXXXXXX" />
      <add key="UserName" value="XXXXXXXXXXXXXXXXXXX" />
      <add key="TokenId" value="XXXXXXXXXXXXXXXXXXX" />
    </TestingScenario>
  </appSettings>
</configuration>

有没有办法让应用程序在一个案例中使用 Scenario1 而在另一个案例中使用 Scenario2 ?详细说明在代码中使用哪种方案会很好,因为它仍然可以使我不必注释掉并粘贴配置值。

1 个答案:

答案 0 :(得分:1)

您无法自定义appSettings;相反,您需要创建自己的自定义配置部分。以下是一些文章,了解它的功能:

http://dotnetslackers.com/articles/customconfiguration/Custom_Configuration_Sections.aspx http://dotnetslackers.com/articles/customconfiguration/Configuration_Section_Validators.aspx http://dotnetslackers.com/articles/customconfiguration/Custom_Configuration_Collections.aspx

您的想法是创建一个继承自ConfigurationSection的类,然后在您可以设置的部分上定义属性,类似于:

[ConfigurationProperty("DisplayInformation", DefaultValue=true)]
public bool DisplayInformation
{
    get
    {
       return (bool)this["DisplayInformation"];
    }
    set
    {
        this["DisplayInformation"] = value;
    }
}

一篇文章包括如何进行集合,在您的示例中,appSettings是ConfigurationSection,TestingScenario是appSettings类上集合中的项目列表,键和值是列表中实体的属性。