我的应用程序允许用户在App.config中指定他们在输出中需要的列:
<?xml version="1.0"?>
<configuration>
<appSettings>
.
.
.
<!-- specify columns you want -->
<add key="NameCol" value="true"/>
<add key="AddressCol" value="true"/>
<add key="TelCol" value="true"/>
.
.
.
</appSettings>
我有一个单独的项目来测试我的应用程序。在测试中,我更改了各种列设置,并在每次测试后使用以下代码清除设置:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// set config options here
// now clear config options
config.AppSettings.Settings.Remove("NameCol");
config.AppSettings.Settings.Remove("AddressCol");
config.AppSettings.Settings.Remove("TelCol");
有没有办法从App.config文件中读取列名并为上面的for循环?所以它会是这样的。 getColNamesFromAppConfig()看起来像什么?
columnNames = getColNamesFromAppConfig()
foreach (string colName in ColumnNames)
{
config.AppSettings.Settings.Remove(colName);
}
答案 0 :(得分:2)
怎么样:
foreach (SettingsProperty property in Settings.Properties) // or ConfigurationProperty?
{
// ...
}
PS。顺便说一下,如果我是你,我会考虑在自定义对象中包装设置(由你自己实现)。如果你必须这样做:
config.AppSettings.Settings.Remove("NameCol");
config.AppSettings.Settings.Remove("AddressCol");
config.AppSettings.Settings.Remove("TelCol");
在测试中,这对我来说是一种代码味道。我相信你应该可以模拟设置以进行测试。然而,这是一个品味问题。