Como faço para obter os valores de um ConfigSection definido como NameValueSectionHandler ao usar ConfigurationManager.OpenMappedExeConfiguration
Obter os valores de um arquivo de configuração que usa uma seção definida por System.Configuration.NameValueSectionHandler é fácil quando você está usando o arquivo de configuração atual para o aplicativo.
Exemplo de arquivo de configuração.
<configuration>
<configSections>
<section name="MyParams" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<MyParams>
<add key="FirstParam" value="One"/>
<add key="SecondParam" value="Two"/>
</MyParams>
</configuration>
Exemplo de código que o lê facilmente.
NameValueCollection myParamsCollection =
ConfigurationManager.GetSection("MyParams") as NameValueCollection;
Este é o código que não funciona.
NameValueCollection collection =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
.GetSection("MyParams") as NameValueCollection;
Isso falha com o seguinte erro na compilação.
Não é possível converter o tipo 'System.Configuration.ConfigurationSection' para 'System.Collections.Specialized.NameValueCollection' por meio de uma conversão de referência, conversão de boxing, conversão de unboxing, conversão de wrapping ou conversão de tipo nulo.
ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel.None) retorna um System.Configuration.Configuration e Configuration.GetSection retorna ConfigurationSection.
ConfigurationManager.GetSection retorna o objeto.
Então, como eu recebo meu NameValueCollection quando preciso usar o OpenExeConfiguration?