Jak uzyskać wartości z ConfigSection zdefiniowane jako NameValueSectionHandler podczas korzystania z ConfigurationManager.OpenMappedExeConfiguration

Pobieranie wartości z pliku konfiguracyjnego, który używa sekcji zdefiniowanej przez System.Configuration.NameValueSectionHandler, jest łatwe, gdy używasz bieżącego pliku konfiguracyjnego dla aplikacji.

Przykładowy plik konfiguracyjny.

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

  <MyParams>
    <add key="FirstParam" value="One"/>
    <add key="SecondParam" value="Two"/>
  </MyParams>
</configuration>

Przykładowy kod, który łatwo go odczytuje.

NameValueCollection myParamsCollection =
   ConfigurationManager.GetSection("MyParams") as NameValueCollection;

To jest kod, który nie działa.

NameValueCollection collection =
  ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
  .GetSection("MyParams") as NameValueCollection;

To kończy się niepowodzeniem z następującym błędem podczas kompilacji.

Nie można przekonwertować typu „System.Configuration.ConfigurationSection” na „System.Collections.Specialized.NameValueCollection” za pomocą konwersji odniesienia, konwersji boksu, konwersji rozpakowywania, konwersji zawijania lub konwersji typu zerowego.

ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel.None) zwraca System.Configuration.Configuration, a Configuration.GetSection zwraca ConfigurationSection.

ConfigurationManager.GetSection zwraca obiekt.

Jak więc odzyskać moją nazwę NameValueCollection, gdy muszę korzystać z OpenExeConfiguration?

questionAnswers(1)

yourAnswerToTheQuestion