2017-03-07 21 views
0

我有这个Q1.config文件在我的控制台应用程序(.NET 4.5.2)的ConfigurationSection不会转换为NameValueCollection中

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="globalKey" value="globalValue" /> 
    </appSettings> 

    <configSections> 
     <section name="validations" type="System.Configuration.NameValueSectionHandler" /> 
    </configSections> 

    <validations> 
     <add key="validationKey" value="validationValue"/> 
    </validations> 
</configuration> 

我读像这样

ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap { ExeConfigFilename = "Q1.config" }; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None); 
ConfigurationSection validationSettings = config.GetSection("validations"); 

这工作正常:

string globalValue = config.AppSettings.Settings["globalKey"].Value; 

但是我如何得到我的“validationKey”?我尝试了这些,但他们不工作:

validationSettings["validationKey"] 
validationSettings.Settings["validationKey"] 
(config.GetSection("validations") as NameValueCollection)["validationKey"] 

回答

0

在这里你去

你的XML配置

<configuration> 
    <configSections> 
    <section name="validations" type="System.Configuration.AppSettingsSection" /> 
    </configSections> 
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> 
</startup> 
<appSettings> 
    <add key="globalKey" value="globalValue" /> 
</appSettings> 
<validations> 
    <add key="validationKey" value="validationValue"/> 
</validations> 
</configuration> 

你可以使用获得在C#中这些值

ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap { ExeConfigFilename = "Q1.config" }; 

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None); 

NameValueCollection validationSettings = (NameValueCollection)ConfigurationManager.GetSection("validations"); 

string globalValue = validationSettings[0]; 

我在这里使用索引validationSettings[0]来访问该值。您可以使用您的密钥获得价值

谢谢

相关问题