6

AppSettings に基づいてカスタム構成ファイル セクションを作成しようとしています。

<configSections>
  <section name="customConfiguration" 
           type="System.Configuration.AppSettingsSection, 
                 System.Configuration, 
                 Version=2.0.0.0, Culture=neutral, 
                 PublicKeyToken=b03f5f7f11d50a3a"/>
</configSections>

ConfigurationManager.GetSection("customConfiguration") で読み込もうとしたところ、返されたオブジェクトのタイプは System.Configuration.KeyValueInternalCollection でした。キーは確認できましたが、このコレクションの値を読み取ることができず、AppSettingsSection にキャストできませんでした。

このStackoverflowの回答は、使用する必要があることを示唆しています

Configuration config = 
    ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection customSettingSection = 
    (AppSettingsSection)config.GetSection("customConfiguration");

これはうまくいきました。私の質問は: ConfigurationManager.GetSection() と Configuration.GetSection() の違いは何ですか? 1 つをいつ使用し、もう 1 つをいつ使用する必要がありますか?

4

1 に答える 1

6

Configuration Class http://msdn.microsoft.com/en-us/library/system.configuration.configuration.aspxに関する MSDN ドキュメントによると、

アプリケーションが独自の構成への読み取り専用アクセスを必要とする場合は、 Web アプリケーションに対してGetSectionメソッドのオーバーロードを使用することをお勧めします。クライアント アプリケーションの場合は、GetSectionメソッドを使用します。

これらのメソッドは、現在のアプリケーションのキャッシュされた構成値へのアクセスを提供します。これは、Configuration クラスよりもパフォーマンスが優れています。

具体的には、クライアント アプリケーションでは、ConfigurationManager は、アプリケーション構成ファイル、ローカル ユーザー構成ファイル、およびローミング構成ファイルをマージすることによって取得された構成ファイルを取得します。

于 2013-07-22T09:20:43.177 に答える