2009-03-31 13 views
4

.Net 3.5(Windows)サービスでは、設定ファイルに小さな値のコレクションを格納したいと思います。基本的には、管理者がこの小さなコレクションに値を追加したり削除したりできるようにする必要があります。小さな値のコレクションを格納するために設定ファイルに追加する必要があるのは何ですか?C#でコレクションを読み取るにはどうすればよいですか?私はC#の方法は非常に類似または同じであると確信しているので、私はVB.NETでの方法を説明します設定ファイルに値のコレクションを格納する

<Illegal Characters> 
    <CustomCollection value="?"/> 
    <CustomCollection value="#"/> 
    <CustomCollection value=","/> 
</Illegal Characters> 

答えて

3

値をリストhereとしてロードするカスタム構成セクションハンドラを作成するといい記事があります。

基本的にはあなたのIConfigurationSectionHandler年代には、次のようになります方法を作成します。

public object Create(object parent, object configContext, XmlNode section) 
{ 
    IList<string> illegal = new List<string>(); 
    XmlNodeList processesNodes= section.SelectNodes("CustomCollection"); 

    foreach (XmlNode child in processesNodes) 
    { 
     illegal.Add(child.Attributes["value"].InnerText); 
    } 
    return illegal; 
} 
0

は、私が探していますコレクションは、このようなデータであり、明確にするために、ある場合には。ソリューションエクスプローラの[マイプロジェクト]のsettings.settingsファイルを開きます。 「OutputPath」など、必要な設定を追加します。次に、コードでは、値の数が少ないと、それらに関連付けられている名前が固定されている場合は、のappSettings構成セクションに保存することができるとConfigurationManagerを使用してそれらを参照する必要があり

variable = My.Settings.OutputPath 

' If a user modifiable setting, you can use: 
My.Settings.OutputPath = variable 
My.Settings.Save() 
1

とそれを参照.AppSettingsコレクション。これは、標準のKey-Valueペアではうまく機能します。データがそれよりも複雑な場合は、独自の構成セクションと関連するConfigurationSectionHandlerを定義して、必要なカスタムオブジェクトにデータを解析する必要があります。 FileSystemWatcherを実装して、構成ファイルの変更を検出し、新しい構成を適用するためにサービスを開始または停止することができない限り、実行中のアプリケーションの構成を更新することもできます。

2

代わりに、不正な文字列を設定ファイルに正規表現として格納することもできます。そのようにすると、指定された文字列で使用されているかどうかを確認するために文字を繰り返し処理する必要はありません。正規表現に基づいて比較を行うことができます。少しのCPUと複雑さを節約するかもしれません。

もちろん、管理者がファイルを直接編集する場合は、個々のXMLノードを使用する方が簡単です。しかし、アプリケーション自体を介して文字リストを変更している場合、正規表現は良いかもしれません。

関連する問題