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?