app.config, добавить раздел и данные в код во время выполнения - PullRequest
0 голосов
/ 17 июня 2020

Моя проблема заключается в следующем: в моей программе есть app.setting с разделом config, который необходим для используемой extern .dll. Он работает нормально, но я хочу иметь возможность записывать в них раздел и данные во время выполнения, но я не могу найти способ сделать это.

Мой app.config выглядит так:

<configuration>
  <configSections>
    <section name="DirectoryServerConfiguration" type="System.Configuration.NameValueSectionHandler"/>
  </configSections>
  <!--<DirectoryServerConfiguration configSource="SubConfigFiles\YPAdress.config"/>-->
</configuration>

(я прокомментировал файл с определением, потому что хочу сделать это в своем коде)

и данные, которые я хочу добавить в DirectoryServerConfiguration, следующие:

<DirectoryServerConfiguration>
  <add key="YPSAddress" value="my https IP" />
</DirectoryServerConfiguration>

Я пробовал много вещей, начиная с попытки добавить ключ / значение из GetSection (до того, как понял, что это только для чтения). Чтобы создать собственный класс, производный от ConfigurationSection.

 public class DirectoryServerConfiguration : ConfigurationSection
{
  public DirectoryServerConfiguration()
  {
  }

  [ConfigurationProperty("Key")]
  public string Key
  {
    get { return (string)this["Key"]; }
    set { this["Key"] = value; }
  }

  [ConfigurationProperty("Value")]

  public string Value
  {
    get { return (string)this["Value"]; }
    set { this["Value"] = value; }
  }
}

, и добавить его:

DirectoryServerConfiguration configData = new DirectoryServerConfiguration();

  configData.Key = "YPSAddress";
  configData.Value = "My Https Ip";

  Configuration configsect = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

  // You need to remove the old settings object before you can replace it
  configsect.Sections.Remove("DirectoryServerConfiguration");
  // with an updated one
  configsect.Sections.Add("DirectoryServerConfiguration", configData);
  // Write the new configuration data to the XML file
  configsect.Save();

Но я не могу заставить его работать, чего я не понимаю?

...