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?

questionAnswers(1)

yourAnswerToTheQuestion