在运行时添加自定义配置元素

本文关键字:配置 元素 自定义 添加 运行时 | 更新日期: 2023-09-27 18:09:15

是否可以在运行时添加自定义配置元素?

这是我的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#代码添加更多的节点吗?

在运行时添加自定义配置元素

这似乎不是来自内置配置部分。您会发现"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);

你发布的文件看起来不像一个普通的。net配置文件,而是一个自定义的XML文件。

在这两种情况下- .config文件只是XML文件-你可以打开,操作和保存它们使用BCL中的任何XML库,如XDocument

然而,如果你想在运行时更改配置,你需要决定应用程序是否也应该在运行时应用这些更改,并为此编写代码,因为通常配置文件只会在启动时读取。

    private void AddNewKey_Config(string key, string value, string fileName)
    {
        var configFile = ConfigurationManager.OpenExeConfiguration(fileName);
        configFile.AppSettings.Settings.Add(key, value);
        configFile.Save();
    }