powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Best practice работы с настройками приложения
25 сообщений из 37, страница 1 из 2
Best practice работы с настройками приложения
    #39575166
Криптовалютный Хайп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Интересует best practice работы с настройками (desktop приложение), чтение-запись настроек, а также создание настроек в run-time.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575175
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Криптовалютный ХайпВсем привет! Интересует best practice работы с настройками (desktop приложение), чтение-запись настроек
обычные стандартные Application Settings
Криптовалютный Хайпа также создание настроек в run-time.
А код для использования созданных в рантайме настроек тоже будет генерироваться в рантайме?
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575356
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

ну вообще есть такой класс ConfigurationManager, где можно и добавлять и удалять настройки и код в рантайме не нужно генерировать. Другое дело, как код будет эти настройки обрабатывать, если он о них ничего не знает. Но возможно там модульная архитектура, а конфигурация для всех модулей одна. Или еще какое извращение.
Или настройки нужны для каких то пользовательских отчетов и подобных вещей. По моему, вполне нормальная хотелка у автора :)
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575378
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Криптовалютный Хайп,

Смотря какие настройки.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575409
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesСон Веры Павловны,

ну вообще есть такой класс ConfigurationManager, где можно и добавлять и удалять настройки
А можно конкретнее - какие именно методы это делают? Вот ConfigurationManager , вот Configuration - в упор не вижу ничего для создания новых настроек.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575445
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

создаете config файл и конфигурируйте свои настройки как хотите, если надо добавлять удалять, создаете в Settgins нужные параметры с ключами, профит.
вроде как создать файл .config через менеджер нельзя, но можно открыть и редактировать
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575536
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesСон Веры Павловны,

создаете config файл и конфигурируйте свои настройки как хотите, если надо добавлять удалять, создаете в Settgins нужные параметры с ключами, профит.
Ну, то есть уже не посредством ConfigurationManager, а редактированием конфига, так?
Roman Mejtesвроде как создать файл .config через менеджер нельзя, но можно открыть и редактировать
Ага, редактировать можно. Только толку от этого мало - при попытке, например, удалить настройку, вы всего лишь добъетесь того, что будет использоваться дефолтное значение настройки из атрибута DefaultSettingValueAttribute. А для редактирования настройки со Scope=User нужно реадктировать не от конфиг, который рядом с приложением, а тот, который в LocalAppData по достаточно нетривиальному пути. Проще уж свою систему настроект с XML-сериализацией написать. Но и она не позволит работать с динамически создаваемыми настройками из кода.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575560
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Динамические юзерские настройки

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
        /// <summary>
        /// Прочитать из файла конфигурации приложения "User Параметр" с именем Name<para>Если параметра нет, то он создасться</para>
        /// </summary>
        /// <param name="Name">Имя параметра</param>
        /// <param name="DefaultValue">Не должно быть null, со встроенным типом.</param>
        /// <returns></returns>
        public static object GetParam(string Name, object DefaultValue)
        {
            object v = DefaultValue;
            if (DefaultValue != null)
            {
                try
                {                    
                    v = KPKcontrols.Properties.Settings.Default[Name];
                }
                catch (System.Configuration.SettingsPropertyNotFoundException)
                {
                    System.Configuration.SettingsProperty property = new System.Configuration.SettingsProperty(Name);
                    property.SerializeAs = System.Configuration.SettingsSerializeAs.Xml;
                    property.DefaultValue = DefaultValue;
                    property.IsReadOnly = false;
                    property.PropertyType = DefaultValue.GetType();

                    property.Provider = KPKcontrols.Properties.Settings.Default.Providers["LocalFileSettingsProvider"];
                    property.Attributes.Add(typeof(System.Configuration.UserScopedSettingAttribute), new System.Configuration.UserScopedSettingAttribute());

                    KPKcontrols.Properties.Settings.Default.Properties.Add(property);
                    KPKcontrols.Properties.Settings.Default.Reload();

                    v = KPKcontrols.Properties.Settings.Default[Name];
                }
            }
            return v;
        }
        
        /// <summary>
        /// Записать в файл конфигурации приложения "User Параметр" с именем Name<para>Если параметра нет, то он создасться</para>
        /// </summary>
        /// <param name="Name">Имя параметра</param>
        /// <param name="Value">Не должно быть null (если null, то ошибки не возникает), с простым типом</param>
        public static void SaveParam(string Name, object Value)
        {
            if (Value == null)
                return;
            try
            {
                object v = KPKcontrols.Properties.Settings.Default[Name];
                KPKcontrols.Properties.Settings.Default[Name] = Value;
                KPKcontrols.Properties.Settings.Default.Save();
            }
            catch (System.Configuration.SettingsPropertyNotFoundException)
            {
                System.Configuration.SettingsProperty property = new System.Configuration.SettingsProperty(Name);
                property.SerializeAs = System.Configuration.SettingsSerializeAs.Xml;
                property.DefaultValue = String.Empty;
                property.IsReadOnly = false;
                property.PropertyType = Value.GetType();

                property.Provider = KPKcontrols.Properties.Settings.Default.Providers["LocalFileSettingsProvider"];
                property.Attributes.Add(typeof(System.Configuration.UserScopedSettingAttribute), new System.Configuration.UserScopedSettingAttribute());

                KPKcontrols.Properties.Settings.Default.Properties.Add(property);
                KPKcontrols.Properties.Settings.Default.Reload();

                KPKcontrols.Properties.Settings.Default[Name] = Value;
                KPKcontrols.Properties.Settings.Default.Save();
            }
        }
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575567
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только юзерские настройки, они и есть юзерские их применяют обычно, например для сохранения каких-либо параметров внешнего вида и тд и тп.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575573
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransa,
Ключевой вопрос: "Зачем динамические"?
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575575
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fortibransa,
Ключевой вопрос: "Зачем динамические"?Я сохраняю размер колонок грида, размер и положение форм и тл и тп.

Саму реализацию конечно можно переделать без try catch, но работает, да и ладно :)
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575581
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати не юзерские настройки сохранять нельзя, но при необходимости их можно менять.
Код: c#
1.
2.
Properties.Settings.Default.Connect = newConnection //так нельзя
Properties.Settings.Default["Connect"] = newConnection //а так можно
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575597
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransaPetro123fortibransa,
Ключевой вопрос: "Зачем динамические"?Я сохраняю размер колонок грида, размер и положение форм и тл и тп.

Саму реализацию конечно можно переделать без try catch, но работает, да и ладно :)а где динамика?
Properties.Settings.Default.ColumnsW = "12;22;567;44"
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575598
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransa,
По хорошему, грид это отдльная песня. Он сам себя должен сохранять, напр. в реестре.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575613
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fortibransaпропущено...
Я сохраняю размер колонок грида, размер и положение форм и тл и тп.

Саму реализацию конечно можно переделать без try catch, но работает, да и ладно :)а где динамика?
Properties.Settings.Default.ColumnsW = "12;22;567;44" А у тебя один грид на приложение?
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575614
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fortibransa,
По хорошему, грид это отдльная песня. Он сам себя должен сохранять, напр. в реестре. дело хозяйское. Кстати в моем случае, если приложение поменяет версию, то настройки те, тю тю.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575617
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransa,
Ниже же дан ответ про реестр.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575618
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransa. Кстати в моем случае, если приложение поменяет версию, то настройки те, тю тю.иногда удобно.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575622
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransaДинамические юзерские настройки
Ну вот примерно этого я и хотел от Романа.
Но для того же сохранения настроек грида - слишком хардкорно. Класс параметров грида, сериализация его в xml, и сохранение в одной-единственной нединамической настройке с типом XmlDocument намного проще и прозрачнее.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575627
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныfortibransaДинамические юзерские настройки
Ну вот примерно этого я и хотел от Романа.
Но для того же сохранения настроек грида - слишком хардкорно. Класс параметров грида, сериализация его в xml, и сохранение в одной-единственной нединамической настройке с типом XmlDocument намного проще и прозрачнее.Во первых гридов много, насчет прозрачнееи проще вопрос еще тот, а зачем тут прозрачность, сохраняет, работает, что еще надо?
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575642
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вера Павловна, все хорошо, а я не знаю что, я буду сохранять и тратить время на огород специально для грида (у меня просто два простеньких метода), для сплита, для... На фига? Что в бошку пришло и оно уже функцианирует. Да, тут мтип сериализации заменить на binary и вообще что хошь храни. И Ваш xmlDocumemt в том числе.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575648
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловныобычные стандартные Application Settings
Лично я это никогда не использую, хотя бы потому что настройки редактируемые из .Net -морды потом считываются из C++ приложения.

Petro123про реестр
Реестр, ДА.
Но я от него несколько лет назад частично отказался по некоторым соображениям в пользу
вообще классического ini-файла настроек
WritePrivateProfileString
GetPrivateProfileString
GetPrivateProfileInt
И очень кстати удобно.
ИМХО, в реестре разумно хранить координаты-размеры формы под Current User и т.п. но не более.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575659
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77реестре разумно хранить координаты-размеры формы под Current User и т.п. но не более.а мы про них и говорим.
Про то что стирается на кнопу Настройки - По умолчанию.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575660
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77считываются из C++ приложения.экзотика
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575663
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Сохрани класс в реестре.
А сеттинг NET в легкую
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Best practice работы с настройками приложения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]