|
|
|
.NET 4.x Настройки приложения04.07.2016, 18:06. Показов 3365. Ответов 55
Метки нет (Все метки)
Есть проект в виде DLL. В нём есть класс с настройками приложения, контролов... Его сериализую и десерализую в XML. Settings не подходят в виду необходимости экспорта-импорта настроек.
Настройки используются во всё приложении в разных случаях. В разных невзаимосвязанных классах. Вопрос: как лучше всего реализовать такую штуку? Т.е. доступ к настройкам полученным из XML файла. Варианты, которые использую: - статичное свойство в основном классе. Десериализуем при инициализации DLL - статичный класс. Десериализуем при инициализации DLL. -.... Может где-то не прав? Может стоит брать значения по мере необходимости и создать отдельный обработчик считывания-записи (сериализации-десериализации) из XML?
0
|
|
| 04.07.2016, 18:06 | |
|
Ответы с готовыми решениями:
55
Языковые настройки приложения Куда сохраняются настройки приложения |
|
|
||
| 05.07.2016, 20:29 [ТС] | ||
|
Psilon, очень наглядно и сразу понятно)) Теперь вы советуете сделать ISettings? И дальше в проекте использовать интерфейсы?
И ещё вопрос, почему вам так понравился Json? Чем XML хуже?Добавлено через 1 минуту (уже 2)
0
|
||
|
14804 / 9577 / 1368
Регистрация: 21.01.2016
Сообщений: 36,085
|
||
| 05.07.2016, 20:32 | ||
0
|
||
|
|
||||||
| 05.07.2016, 20:41 [ТС] | ||||||
|
Psilon, и ещё. Типа не обязательно держать Settings всё время загруженными, так? Т.е. как понадобится - Load. А не как я, в родительском изначальном сделал статик свойство и через него всё выдёргивал.
Просто так может просесть производительность и ещё с памятью (наверное) могут быть проблемы. Один из триггеров участвует при рисовалке OpenGL, что-то вроде (СТАРЫЙ КОД):
Вот к этой штуке SwAddin.mySettings.EnableFiberRectangle идёт обращение постоянно, пока пользователь елозит мышкой))) в программе-родителе.
0
|
||||||
|
Master of Orion
|
|||
| 05.07.2016, 20:56 | |||
|
skilllab, хотите - доставайте сразу, не хотите - по необходимости. В этом и прелесть подобного решения, оно гибкое и может использовать как угодно.
Такие вот дела.Тут вроде неплохо рассказано в деталях. Добавлено через 11 минут Ах да, еще он не зависит от наличия дебильных атрибутов а-ля Serializable, но при этом прекрасно сам их понимает (например атрибут DataMember). Таким образом он не требует наличия атрибутов или специальных интефрейсов, но если они будут, то он переопределит свое поведение и будет использовать указанное вами.
1
|
|||
|
|
|||
| 05.07.2016, 21:03 [ТС] | |||
![]() А что насчёт этого тестового примера с классом и
0
|
|||
|
Master of Orion
|
||||||||
| 05.07.2016, 21:09 | ||||||||
0
|
||||||||
|
|
||
| 27.07.2016, 00:08 | ||
|
OnDeserializing/OnDeserialised, OnSerializing/OnSerialized. Можете использовать их.
0
|
||
|
14804 / 9577 / 1368
Регистрация: 21.01.2016
Сообщений: 36,085
|
|
| 27.07.2016, 05:54 | |
|
Serg34, финализаторы предназначены только для высвобождения неуправляемых ресурсов. Обращение к управляемым ресурсам из финализаторов недопустимо, так как порядок уничтожения объектов сборщиком мусора не определён и объект на который указывает ссылка serializer уже может быть недоступен.
Для этих целей подходит подписка на событие Form.Closed (Windows Forms) или Window.Closed (WPF), либо же на AppDomain.ProcessExit.
0
|
|
|
|
|
| 27.07.2016, 21:28 | |
|
Usaga, а вы специально мой "деструктор" "финализатором" называете? (читал статью сегодня на эту тему)
Я вспомнил где прочитал - Шилдт: "программа может завершиться до того, как произойдет "сборка мусора", а следовательно, деструктор может быть вообще не вызван." Правда теперь непонятно какая польза от этих деструкторов, если они работают через раз... Но я на самом деле не об этом: я хочу добиться сохранения настроек один раз в конце жизни программы независимо от исхода: исключения, завершение процесса в диспетчере задач или, самое интересное, после остановки отладки в Visual Studio (уж очень люблю я эту кнопку )Как понимаете, ни один из этих методов не подходит. Есть же алгоритмы сохранения при аварийном завершении. Думал о FirstChanceExeption. Но по моему все-равно не то...
0
|
|
|
Master of Orion
|
|
| 27.07.2016, 22:11 | |
|
Serg34, ничего не может гарантировать подобного сохранения. Ибо например если в консольке просто нажать на крестик, то финализаторы не отработают, т.к. процесс просто умрет. А это не единственный случай, когда процесс жестко останавливается. А учитывая, что 99% пользователь нажимают на крестик (а не выходят через ctrl+c), становится ясна моя печаль
Как раз недавно этот вопрос вентилировал. Без хуков и замены жесткого приземления на мягкое никак не добиться.
0
|
|
|
|
|
| 27.07.2016, 22:22 | |
|
Psilon, Тогда как тот же Excel предлагает восстановить несохраненные файлы после жесткой остановки???
Значит программа может понимать как она завершается Или там что-то замудреное, типа сохранения временных фалов, которые только при мягкой посадке удаляются?
0
|
|
|
|
||
| 28.07.2016, 09:28 [ТС] | ||
0
|
||
|
14804 / 9577 / 1368
Регистрация: 21.01.2016
Сообщений: 36,085
|
||
| 28.07.2016, 10:13 | ||
|
1
|
||
| 28.07.2016, 10:13 | |
|
Как и где хранить настройки приложения
Читать настройки приложения из файла конфигурации Сохраняем настройки приложения средствами Visual Studio Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|