.NETには標準で設定ファイルを読み込むためのAPIが公開されています。
そのままでも単純なキー=値形式の定義できます。
カスタマイズするには、主に次の3つのクラスを使用します。
- ConfigurationSectionクラス
- ConfigurationElementクラス
- ConfigurationElementCollectionクラス
ConfigurationSectionクラス
カスタマイズした設定項目のルートになるクラスです。
class NetworkConfigurationSection : ConfigurationSection
{
[ConfigurationProperty("LocalHost")]
public NetworkConfigElement LocalHost
{
get { return base["LocalHost"] as NetworkConfigElement; }
set { base["LocalHost"] = value; }
}
[ConfigurationProperty("Networks")]
public NetworkConfigElementCollection Networks
{
get { return base["Networks"] as NetworkConfigElementCollection; }
}
}
ConfigurationElementクラス
設定値をもつXMLエレメントに対応するクラスです。
class NetworkConfigElement : ConfigurationElement
{
[ConfigurationProperty("IPAddress")]
public string IPAddress
{
get { return base["IPAddress"] as string; }
set { base["IPAddress"] = value; }
}
}
ConfigurationElementCollectionクラス
複数のConfigurationElementをまとめるクラスです。
class NetworkConfigElementCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new NetworkConfigElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
NetworkConfigElement elm = element as NetworkConfigElement;
if (null == elm) return null;
return elm.IPAddress;
}
}