在运行时添加自定义配置元素
本文关键字:配置 元素 自定义 添加 运行时 | 更新日期: 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();
}