Добавить пользовательский элемент конфигурации во время выполнения - PullRequest
0 голосов
/ 20 сентября 2011

Возможно ли добавить пользовательский элемент конфигурации во время выполнения.

Вот мой файл 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 ]

2 голосов
/ 20 сентября 2011

Это не из встроенного раздела конфигурации. Вы обнаружите, что «NodesList» является разделом / элементом, который написан на заказ. Чтобы определить, откуда в вашей кодовой базе это происходит, поищите «NodesList» в верхней части вашего конфигурационного файла в элементе configSections. Это укажет вам на класс для изучения.

После этого вам нужен класс для правильной поддержки операций записи.

Чтобы узнать больше о настройке файлов конфигурации, есть замечательная серия в 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);
0 голосов
/ 04 декабря 2018
    private void AddNewKey_Config(string key, string value, string fileName)
    {
        var configFile = ConfigurationManager.OpenExeConfiguration(fileName);
        configFile.AppSettings.Settings.Add(key, value);
        configFile.Save();
    }
0 голосов
/ 20 сентября 2011

Файл, который вы разместили, не похож на обычный конфигурационный файл .NET, но представляет собой пользовательский файл XML.

В любом случае - .config файлы - это просто файлы XML - вы можете открывать, манипулировать исохраните их, используя любую из библиотек XML в BCL, например XDocument.

Однако, если вы хотите внести изменения в конфигурацию во время выполнения, вам нужно будет решить, следует липриложение должно применить эти изменения также во время выполнения и код для этого, так как обычно файл конфигурации будет прочитан только при запуске.

...