アプリケーションの現在の構成ファイルを使用している場合、System.Configuration.NameValueSectionHandler で定義されたセクションを使用する構成ファイルから値を取得するのは簡単です。
構成ファイルの例。
<configuration>
<configSections>
<section name="MyParams" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<MyParams>
<add key="FirstParam" value="One"/>
<add key="SecondParam" value="Two"/>
</MyParams>
</configuration>
簡単に読めるサンプルコード。
NameValueCollection myParamsCollection =
ConfigurationManager.GetSection("MyParams") as NameValueCollection;
これは動作しないコードです。
NameValueCollection collection =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
.GetSection("MyParams") as NameValueCollection;
コンパイル時に次のエラーで失敗します。
参照変換、ボックス化変換、ボックス化解除変換、ラッピング変換、または null 型変換を介して、型 'System.Configuration.ConfigurationSection' を 'System.Collections.Specialized.NameValueCollection' に変換できません。
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) は System.Configuration.Configuration を返し、Configuration.GetSection は ConfigurationSection を返します。
ConfigurationManager.GetSection はオブジェクトを返します。
では、OpenExeConfiguration を使用する必要がある場合、NameValueCollection を取得するにはどうすればよいでしょうか?