質問

.Net 3.5 (Windows) サービスで、値の小さなコレクションを構成ファイルに保存したいと考えています。基本的に、管理者がこの小さなコレクションに対して値を追加および削除できるようにする必要があります。小さな値のコレクションを保存するには構成ファイルに何を追加する必要がありますか?また、そのコレクションを C# で読み取るにはどうすればよいですか?

明確にするために、私が探しているコレクションは次のようなデータです。

<Illegal Characters>
  <CustomCollection value="?"/>
  <CustomCollection value="#"/>
  <CustomCollection value=","/>
</Illegal Characters>
役に立ちましたか?

解決

リスト<のhref =「http://www.dotneat.net/2007/10/16/StoringACollectionOnYourAppconfigUsingSectionHandlers.aspx」のrel = "nofollowのような値をロードするカスタム構成セクションハンドラを作成するには良い記事がありますnoreferrer ">ここを。

基本的にはあなたの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;
}

他のヒント

別の方法として、あなたの設定ファイルで正規表現として不正な文字の単一の文字列を格納することができます。あなたがそれらをチェックするために文字を反復処理する必要はありませんその方法は、与えられた文字列で使用されている - あなたは、正規表現に基づいて比較を行うことができます。 CPUと複雑さのビットを保存することがあります。

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

値の数が少なく、それらに関連付けられた名前が固定されている場合は、値を appSettings 構成セクションに保存し、 構成マネージャー.AppSettings コレクション。これは、標準のキーと値のペアでは非常にうまく機能します。データがそれよりも複雑な場合は、独自の構成セクションと関連するセクションを定義することもできます。 構成セクションハンドラー データを解析して任意のカスタム オブジェクトに変換します。おそらく、 ファイルシステムウォッチャー 新しい構成を適用するためにサービスを開始/停止することが許容されない限り、構成ファイルへの変更を検出し、実行中のアプリケーションの構成を更新します。

私はC#の方法は、いくつかのケースで非常に類似または同じであると確信しているので、

私は、VB.NET方法を説明します。ソリューションエクスプローラで[マイプロジェクトの下settings.settingsファイルを開きます。たとえば、必要な設定で「OutputPath」を追加します。その後、コードで、でそれを参照する

variable = My.Settings.OutputPath

' If a user modifiable setting, you can use:
My.Settings.OutputPath = variable
My.Settings.Save()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top