2006年08月18日

独自の構成セクション ハンドラを書く方法

   このエントリーをはてなブックマークに追加 Clip to Evernote
.NET Framework2.0では、独自の構成セクション ハンドラを書く方法が変更になったみたいだ。
今までは、IConfigurationSectionHandler インターフェースを実装し、XmlNodeをハンドリングする必要があったが、.NET Frameworkでは、そういった面倒なコーディングが不要になった。
例えば、以下のようなコードを書けばよい。

 public class MyAppSection : ConfigurationSection {
const string cName = "myName";
[ConfigurationProperty(cName, IsRequired = true)]
[StringValidator(InvalidCharacters = "~!@#$%^&*()[]{}/;'\"|\\",
MinLength = 1, MaxLength = 60)]
public String MyName {
get { return (String)this[cName]; }
}

const string cNumber = "myNumber";
[ConfigurationProperty(cNumber, DefaultValue = 0, IsRequired = false)]
[IntegerValidator(ExcludeRange= false, MinValue = 0, MaxValue = 10000)]
public int MyNumber {
get { return (int)this[cNumber]; }
}
}

上記クラスを作成すれば、以下のような構成セクションを書くことができる。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name ="appSectionGrp">
<section name="myAppSection"
type="Spike.MyAppSection, Spike"/>
</sectionGroup>
</configSections>

<appSectionGrp>
<myAppSection
myName="Value1"
myNumber="543"
/>
</appSection>
</configuration>

この構成セクションを読み込むコードは以下のとおり。

 MyAppSection cs = 
ConfigurationManager.GetSection("appSectionGrp/myAppSection")
as MyAppSection;
string s = cs.MyName;
int n = cs.MyNumber;

プロパティとして見えるのはすばらしいですね。


 

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

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