我的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 ?详细说明在代码中使用哪种方案会很好,因为它仍然可以使我不必注释掉并粘贴配置值。
答案 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类上集合中的项目列表,键和值是列表中实体的属性。