0

実行時にカスタム構成要素を追加することは可能ですか?

ここに私のapp.configファイルがあります

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="NodeList"
               type="Configuration.NodeListSection, NodeListConfiguration"
               requirePermission="false" />
  </configSections>
  <NodeList>
    <nodes>
      <add name="Dev1" isdefault="false" description ="Dev server" />
      <add name="QA1" isdefault="true" description="QA server"/>
      <add name="Prod1" isdefault="false" description="Production" />
    </nodes>
  </NodeList>
</configuration>

C# コードを使用して、実行時にノードを追加できますか。

4

3 に答える 3

2

これは、組み込みの構成セクションからのものではないようです。「NodesList」はカスタム作成されたセクション/要素であることがわかります。configSectionsコードベースのどこから来ているかを判断するには、要素の構成ファイルの上部にある「NodesList」を探します。これにより、調査するクラスが示されます。

その後、クラスが書き込み操作を適切にサポートする必要があります。

構成ファイルのカスタマイズについてさらに詳しく学ぶには、このトピックに関する優れたシリーズが CodeProjectにあります。特に、構成変更の保存に関するセクションが役立ちます。

編集(質問に追加情報を追加した後):

次のようなことを試してください (もちろん、それはすべて NodeListSection コードベースの内容に依存します):

using Configuration;

var nodeListSection = ConfigurationManager.GetSection("NodeList") as Configuration.NodeListSection;
var newNode = new NodeElement() { Name = "xyz", IsDefault = false, Description = "New Guy" };
nodeListSection.Nodes.Add(newNode);

Configuration.Save(ConfigurationSaveMode.Modified);
于 2011-09-19T21:16:07.230 に答える
0

投稿したファイルは、通常の.NET構成ファイルではなく、カスタムXMLファイルのように見えます。

いずれの場合も(.configファイルは単なるXMLファイルです)、BCL内の任意のXMLライブラリ(など)を使用して、ファイルを開いたり、操作したり、保存したりできますXDocument

ただし、実行時に構成を変更する場合は、アプリケーションが実行時にこれらの変更を適用するかどうかを決定し、そのためのコードを作成する必要があります。通常、構成ファイルは起動時にのみ読み取られます。

于 2011-09-19T21:11:00.470 に答える