2011年08月15日

アプリケーションの設定情報の扱いについて考えてみる(5)

   このエントリーをはてなブックマークに追加 Clip to Evernote
前回説明したように、ApplicationSettingsBase では、
「ユーザ単位ではなく、アプリケーションで一つの設定情報を扱い、かつ、読み書きを可能にしたい」
という要求には独自のプロバイダーを記述する必要があります。
これ結構面倒です。

それならば、ConfigurationSection クラスという別のクラスを利用したほうが
簡単に要求に答えられそうです。

ということで、ConfigurationSection クラスを使い、ウィンドウの位置とサイズを扱うサンプルを
書いてみました。以下にそのコードを示します。


※ System.Configuration を参照に追加します。

クラス WindowInfoは、ConfigurationSection クラスから派生させています。
ApplicationSettingsBase から派生させたクラスと良く似ていますね。
大きく異なる点は、Load staticメソッドがある点です。
このメソッドは、設定ファイルを読み込むメソッドですが、標準の App.configではなく、
別ファイルとして、configファイルを扱えるようにようにしてます。
ここでは、"windowInfo.app.config" としています。

Saveメソッドは、インスタンスメソッドです。configファイルへの保存は、Configurationクラスの
Saveメソッドを呼び出すだけです。自分で保存ロジックを記述する必要はありません。

"windowInfo.app.config"の中身は、以下のようになります。
属性として値が保持されるので、ApplicationSettingsBase よりは、読みやすいですね。

なお、"windowInfo.app.config" は事前に用意しておく必要があります。
windowInfo要素は無くてもかまいません。存在しない場合は、DefaultValueで指定した
値が、セットされます。

最後に、利用する側のコード例を示します。



なお、ApplicationSettingsBaseとは異なり、バージョン管理を行いたいという場合には、 自分ですべて実装する必要があるようです。 一長一短がありますので、要求によって使い分ける必要がありますね。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52181691