c#: Создайте новые настройки во время выполнения

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

18
задан Filburt 19 September 2016 в 22:56
поделиться

5 ответов

Так как класс Настроек сгенерирован во время изготовления (или, на самом деле, каждый раз, когда Вы обновляете файл настроек из разработчика), Вы не можете использовать этот механизм для динамических сценариев. Можно, однако, добавить некоторый набор или словарь к параметрам настройки приложения и изменить это динамично.

7
ответ дан 30 November 2019 в 06:46
поделиться

Как Вы получили бы доступ к новым настройкам, которые Вы создали? Точка разработчика настроек Visual Studio - то, что можно написать код, который использует эти настройки со временем компиляции, проверяя кода. Если Вы захотите динамично создать новые настройки для своего приложения для использования, то необходимо будет также динамично загрузить их. Для динамических настроек можно хотеть посмотреть на Систему. Блок конфигурации, особенно ConfigurationSection. Можно создать раздел пользовательской конфигурации с этим, которое Вы могли использовать для динамического дополнения/удаления установки. Вы могли бы использовать ConfigurationCollection для того динамического дополнения/удаления.

файлы INI а? Google поднялся эта библиотека INI для.NET.

1
ответ дан 30 November 2019 в 06:46
поделиться

Я вижу, как то, что я хотел, было неверным представлением. Я портирую приложение C++ на c#, и он имеет много ini настроек файла, и я искал ярлык для включения их. Я ленив.

0
ответ дан 30 November 2019 в 06:46
поделиться

Что вы можете сделать, так это создать новый раздел реестра. Назовите новый раздел «Настройки вашей программы».

RegistryKey ProgSettings = Registry.CurrentUser.OpenSubKey("Software", true);
ProgSettings.CreateSubKey("Your Program settings");    
ProgSettings.Close();

Теперь вы можете добавлять строковые идентификаторы и значения.

RegistryKey ProgSettings = Registry.CurrentUser.OpenSubKey("Software\\Your Program settings", true);
ProgSettings.SetValue("Setting Name", value); // store settings    
string settings = ProgSettings.GetValue("Setting Name", false); // retreave settings    
ProgSettings.DeleteValue("Setting Name", false);

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

Многие коммерческие программные приложения используют эти методы. В stackoverflow есть много примеров записи и чтения в реестр. Это намного проще, чем изменить файл appconfig.xml, который используется при создании настроек.

2
ответ дан 30 November 2019 в 06:46
поделиться

Колоны играют особую роль в URL-адресах - например, для обозначения порта и поэтому являются «зарезервированными» ( см. здесь ).

URL-адреса используют некоторые символы для специальных используется при определении синтаксиса. Когда эти символы не используются в своих специальная роль внутри URL, они должны для кодирования

Таким образом, двоеточие должно быть удалено.

-121--4407546-

Поскольку void не позволяет указать имя аргумента, которое требуется для получения возвращаемого значения первой функции, независимо от того, что она фактически возвратила.

-121--2478570-

Невозможно добавить параметры настройки непосредственно (по крайней мере, не без редактирования XML-файла конфигурации во время выполнения), но его можно подделать.

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

Я создал новый настраивать StringCollection с именем ControlData и разместил там свои собственные данные. Затем я загружаю данные из этого списка и использую их для инициализации элементов управления.

Список выглядит следующим образом:

Box1Text=A
Box1List=abc;def;foo;bar;
Box2Text=hello
Box2List=server1;server2;

В коде запуска я считываю пары ключ/значение так:

foreach (string item in Properties.Settings.Default.ControlData) {
  string[] parts=item.split('=');

части [0] будут иметь ключ, а части [1] - значение. Теперь вы можете делать вещи на основе этих данных.

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

2
ответ дан 30 November 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: