Как создать различные наборы настроек во время выполнения? - PullRequest
0 голосов
/ 13 февраля 2020

В моем приложении WPF есть множество настроек, которые пользователь может настроить, я использую встроенные настройки приложения (Properties.Settings ... и файл .settings), чтобы сделать это, и все работает нормально. Теперь предполагается, что приложение позволяет пользователю определять различные предварительные настройки параметров для разных целей (точнее, различных образцов, это программное обеспечение измерительной системы), поэтому им не нужно go повторять каждый параметр при переключении.

Итак, мне нужно было бы иметь возможность создавать копии настроек приложения во время выполнения и сохранять их все отдельно в своем файле, а затем восстанавливать их при запуске приложения. Я могу создавать новые файлы настроек во время разработки, но это не под контролем пользователя, а не то, что я ищу. Я также могу создавать новые экземпляры настроек в коде, но когда я их сохраняю, он просто перезаписывает тот же файл user.config, который используется по умолчанию, и метод Save () не принимает аргументов для его сохранения в другом месте.

Любые идеи

1 Ответ

1 голос
/ 13 февраля 2020

Вам придется создать отдельный класс для ваших предустановленных настроек. Затем вы можете сохранить его в виде списка в настройках.

Допустим, у вас есть предустановленный класс, содержащий значения ваших настроек:

public class Preset
{
    public int MaxPower { get; set; }
    public int AllowedRotations { get; set; }
}

Вы можете в одном месте получить все эти настройки вот так:

var presets = JsonConvert.DeserializeObject<List<Preset>>(Properties.Settings.Default.Presets);

И вы бы сохранили настройки примерно так:

List<Preset> presets = null;
if (Properties.Settings.Default.Presets == null)
    presets = new List<Preset>();
else
    presets = JsonConvert.DeserializeObject<List<Preset>>(Properties.Settings.Default.Presets);

presets.Add(new Preset() { AllowedRotations = 1000, MaxPower = 200});

Properties.Settings.Default["Presets"] = JsonConvert.SerializeObject(presets);
Properties.Settings.Default.Save();

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

ПРИМЕЧАНИЕ : Я использую конвертер Json и сохраняю список объектов как JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...