Файл Visual Studio Settings.settings - PullRequest
1 голос
/ 26 июня 2010

Есть ли способ создания новой настройки в файле Settings.settings во время выполнения?

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

  • Я знаю, как получить значения из файла Settings.settings (value = Properties.Settings.Default.XXX)
  • Я знаю, как обновить существующее значение (Properties.Settings.Default.XXX = newValue; Properties.Settings.Default.Save ())

Я хочу знать, как я могу добавить «Имя», "Type", "Scope" и "Value" в файл Settings.settings во время выполнения.

Будем благодарны за любые предложения!

Спасибо, Ivar

1 Ответ

1 голос
/ 26 июня 2010

Проблемы

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

Вы заметите, что у кода есть свойства в C #, которые вы создаете в своем конструкторе.Например, я добавил параметр для:

Age [int]  30. 

Код сгенерирован:

[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("30")]
public int Age {
   get {
       return ((int)(this["Age"]));
   }
   set {
       this["Age"] = value;
   }
}

(Генерация кода - это то, почему у вас есть строгие настройки)

Я не уверен, что вы могли бы произвести то же самое во время выполнения.Вам нужно будет сгенерировать код и передать его динамически JIT-компилятору или что-то в этом роде.Или, может быть, есть другой способ, о котором я не знаю из-за моего ограниченного понимания настроек.

Предложение / Обходной путь

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

Затем вы можете, например, сохранить несколько возрастов под одной настройкой:

Ages  [System.Collections.ArrayList]  {add multiple values programatically}

В итоге вы можете использовать код C # для управления им:

System.Collections.ArrayList list = new System.Collections.ArrayList();
list.Add("1");
list.Add("30");
Properties.Settings.Default.Ages = list;
Properties.Settings.Default.Save();
...