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

时间:2011-09-19 21:08:03

标签: c# runtime app-config custom-configuration

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

这是我的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#代码在运行时添加更多节点。

3 个答案:

答案 0 :(得分:2)

这似乎不是来自内置配置部分。您会发现“NodesList”是自定义编写的部分/元素。要确定代码库中的位置,请在configSections元素的配置文件顶部查找“NodesList”。这将指导你在课堂上进行研究。

之后,您需要该类正确支持写操作。

要了解有关自定义配置文件的更多信息,请参阅该主题great series at CodeProject。特别是Saving Configuration Changes部分应该对您有所帮助。

修改(在更多信息添加到问题后):

尝试类似的东西(当然这一切都取决于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);

答案 1 :(得分:0)

您发布的文件看起来不像普通的.NET配置文件,而是自定义XML文件。

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

但是,如果要在运行时更改配置,则需要确定应用程序是否应在运行时应用这些更改以及此代码,因为通常只会在启动时读取配置文件。 / p>

答案 2 :(得分:0)

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