powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Best practice работы с настройками приложения
37 сообщений из 37, показаны все 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
Best practice работы с настройками приложения
    #39575692
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но...., NET setting на самом деле полная лажа, от нее толку практически ноль.
Установки уровня Application по сути просто константы. Юзерские годны только для "внешнего вида" не более того, в общем ХРЕНЬ.

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

Гыы, как ВПФ, оооо, к любому коду, интерфейс, оооо. А на самом деле огород на огороде и при разборе чужого кода и при вспоминании своего и при создании, в ВПФ, натрахайся родной с классами, с вьюверами, нагороди пипец контролов, отладь за два месяца, то что винформс сделаешь за два дня.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575777
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransaНо...., NET setting на самом деле полная лажа, от нее толку практически ноль.
Очень развернутое и аргументированное мнение, да.
fortibransaУстановки уровня Application по сути просто константы.
А что еще от них нужно?
fortibransaЮзерские годны только для "внешнего вида" не более того
Чего???

fortibransaГыы, как ВПФ, оооо, к любому коду, интерфейс, оооо. А на самом деле огород на огороде и при разборе чужого кода и при вспоминании своего и при создании, в ВПФ, натрахайся родной с классами, с вьюверами, нагороди пипец контролов, отладь за два месяца, то что винформс сделаешь за два дня.
1. А как в этой теме вдруг всплыли WPF и винформс? 2. Такое можно заявлять, когда одинаково хорошо владеешь каждой из сравниваемых технологий. В данном случае у меня большое подозрение, чтос WPF кое у кого не очень срослось.
P.S. Сделайте на винформс хотя бы за два дня листбокс/комбобокс с юзерконтролом произвольной сложности в элементах списка. И DGC с тем же юзерконтролом в ячейке грида. В WPF это делается за 5 минут.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575794
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныfortibransaНо...., NET setting на самом деле полная лажа, от нее толку практически ноль.
Очень развернутое и аргументированное мнение, да.
fortibransaУстановки уровня Application по сути просто константы.
А что еще от них нужно?
fortibransaЮзерские годны только для "внешнего вида" не более того
Чего???

fortibransaГыы, как ВПФ, оооо, к любому коду, интерфейс, оооо. А на самом деле огород на огороде и при разборе чужого кода и при вспоминании своего и при создании, в ВПФ, натрахайся родной с классами, с вьюверами, нагороди пипец контролов, отладь за два месяца, то что винформс сделаешь за два дня.
1. А как в этой теме вдруг всплыли WPF и винформс? 2. Такое можно заявлять, когда одинаково хорошо владеешь каждой из сравниваемых технологий. В данном случае у меня большое подозрение, чтос WPF кое у кого не очень срослось.
P.S. Сделайте на винформс хотя бы за два дня листбокс/комбобокс с юзерконтролом произвольной сложности в элементах списка. И DGC с тем же юзерконтролом в ячейке грида. В WPF это делается за 5 минут.
1. а что там не так, что там можно аргументировать? Оказались бестолковые их сеттинги.
2. Тогда какой смысл в этих тн сеттингах.
3. А какой еще может быть толк от таких юзерских сеттингов?
4. Пример, срочно нужно продолжить один проект, человек уволился, кидают трех программистов на него, ВПФ кстати, трое программистов, один очень хорошо владеет ВПФ, неделю ковыряются, толку 10%, один из программистов на совещании заявляет или винформс или проект в задницу, начальство соглашается, 2 дня, ДВА дня, все готово и на 3-й день сдано заказчику
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575798
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я все в базе храню. Перешел пользователь на другую машину, а все настройки остались
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575799
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Я все в базе храню. Перешел пользователь на другую машину, а все настройки осталисьДелал так, но начальство сказало, неее, делаем в сеттингах
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575841
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Я все в базе храню. Перешел пользователь на другую машину, а все настройки остались
Ещё вариант:
Есть есть AD, то в папке user перемещаемые профили.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575842
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransa1. а что там не так, что там можно аргументировать? Оказались бестолковые их сеттинги.
2. Тогда какой смысл в этих тн сеттингах.
3. А какой еще может быть толк от таких юзерских сеттингов?
Что конкретно надо вам для счастья в настройках? Чтобы на CD ROM записывала?
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575897
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransa1. а что там не так, что там можно аргументировать? Оказались бестолковые их сеттинги.
2. Тогда какой смысл в этих тн сеттингах.
3. А какой еще может быть толк от таких юзерских сеттингов?
Поток сознания и эмоции, аргументация нулевая.
fortibransa4. Пример, срочно нужно продолжить один проект, человек уволился, кидают трех программистов на него, ВПФ кстати, трое программистов, один очень хорошо владеет ВПФ, неделю ковыряются, толку 10%, один из программистов на совещании заявляет или винформс или проект в задницу, начальство соглашается, 2 дня, ДВА дня, все готово и на 3-й день сдано заказчику
И? Один отдельно взятый случай вовсе не показатель картины в целом. Возможно, тот, кто очень хорошо владел WPF, на самом деле владел не так уж и хорошо, возможно, предыдущий автор оставил такую груду лапшекода (которую можно соорудить на любом языке и платформе), что и 10 человек не разгребли бы (об этом косвенно свидетельствует тот факт, что проект был переписан с нуля), или вышеупомянутые трое работали, как лебедь, рак, и щука, либо всё вместе.
fortibransaCat2Я все в базе храню. Перешел пользователь на другую машину, а все настройки осталисьДелал так, но начальство сказало, неее, делаем в сеттингах
Вообще-то используя все ту же стандартную систему настроек, хранение можно вполне делать хоть в БД, хоть в облаке (хоть в ини-файлах).
Petro123fortibransa1. а что там не так, что там можно аргументировать? Оказались бестолковые их сеттинги.
2. Тогда какой смысл в этих тн сеттингах.
3. А какой еще может быть толк от таких юзерских сеттингов?
Что конкретно надо вам для счастья в настройках? Чтобы на CD ROM записывала?
Мне тоже, кстати, это интересно.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575906
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в настройках раздражает то, что нельзя указать нормально пользовательский тип в конфигураторе настроек, при этом если руками прописать и тип поддерживает XML сериализацию, то всё работает :)
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39575958
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesнельзя указать нормально пользовательский тип в конфигураторе настроек
Если тип в отдельной сборке - вполне можно.
Roman Mejtesи тип поддерживает XML сериализацию, то всё работает :)
Не обязательно. Можно просто прикрутить к типу атрибутом кастомный TypeConverter с сериализацией в строку.
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39598281
Криптовалютный Хайп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
Best practice работы с настройками приложения
    #39598292
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Криптовалютный Хайп,
Down
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Best practice работы с настройками приложения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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