powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Надо завести параметры разных типов с описаниями - как бы получше?
15 сообщений из 15, страница 1 из 1
Надо завести параметры разных типов с описаниями - как бы получше?
    #38117962
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю по шаблону MVVM модель. У меня есть объект настроек и кучка параметров разных типов (инты, даблы, очень большие коллекции). Хочу, чтобы у каждого параметра были кроме значения ещё и имя (понятное пользователю - т. е. просто имя переменной не пойдёт) и описание (строка). Как лучше это реализовать?

Первое, что в голову пришло - завести для всех параметров тип MyParameter с полями: имя (строка), значение (object), описание (строка). Вот только загвоздка со значением типа объект, особенно, если этот объект - коллекция. Не будет ли большая потеря производительности при обращении к этим коллециям, и вообще, когда каждое значение параметра надо приводить к своему типу (т. е. объект к инту, объект к даблу и т. д.)?

Второй вариант придумал - завести отдельный тип для настроек, которые будут участвовать в расчёте - без имён и пояснений, только со значениями параметров. И отдельный тип для настроек, где все эти пояснения будут, но он не будет участвовать в расчёте. Просто при вызове функции расчёта я буду создавать объект настроек без пояснений из объекта настроек с пояснениями, и передавать на расчёт первый. При этом хотя и параметры-значения скопируются (это не ссылочные типы) - это не страшно, т. к. их немного, но массив передастся по ссылке - т. е. потери производительности сильной быть не должно. Единственное, что меня смущает, так это то, что я оба этих типа настроек хочу поместить в модель, а не в модель представления, т. к. считаю, что пояснения и имена параметров должны быть в модели.


Кто как может это прокомментировать и предложить более лучшие варианты?
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38117976
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, второй вариант предполагает большое дублирование типов, ибо там на самом деле не просто настройки, а вложенные в несколько слоёв типы разных настроек, и только уже их поля являются интами, даблами или коллекциями.
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38117980
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант подумал, что тип настроек без пояснений можно сделать без вложенности - просто приписать к названиям полей этакий путь в объекте настроек. Заодно избавлюсь и от лишних "разыменований указателей" длинных путей в объекте настроек.
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38117988
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но чего-то всё равно не то получается с типом настроек с пояснениями - у него-то придётся опять писать все значения типом object, а при приведении к типу настроек без пояснений надо будет запоминать, к какому типу приводить...
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38117998
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

для метаданных используй аттрибуты
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38118014
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationuser7320,

для метаданных используй аттрибуты
В смысле, не понял? Я хочу имена и описания параметров в модель представления и далее в представления выводить. Метаданные и атрибуты мне в этом помогут? Как?
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38118038
Фотография Местный король Делфей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationuser7320,

для метаданных используй аттрибуты
+1

также как в ASP.NET атрибут DisplayName
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38118111
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320pationuser7320,

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

для наименования DisplayNameAttribute
для описания DescriptionAttribute
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38119200
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, прочитал про атрибуты (в который раз). В связи с этим возникли вопросы при использовании атрибутов с MVVM.

1. Могут ли свойства контролов в представлениях привязываться к значениям атрибутов модели напрямую? Т. е. можно ли написать что-то вроде:

Код: xml
1.
<TextBox Text="{Binding Path=DisplayNameAttribute.DisplayName}" />



где DisplayNameAttribute установлен для свойства объекта, привязываемого к группе контролов, одним из которых является данный текстбокс?


2. Если не 1, то какой типичный способ использования атрибутов в представлениях? Надо в модели представления с помощью рефлексии достать значения атрибутов модели, раскидать их по свойствах модели представления и только потом уже привязывать представления к свойствам модели представления?


3. Если имена и описания должны браться из локализованных строк из ресурсов, то достаточно ли писать что-то вроде

Код: c#
1.
2.
[DisplayName(Locals.Models.Settings.Strings.MySetting)]
int MySetting { get; set; }



или лучше использовать более продвинутые для этого атрибуты из 4-го фреймворка, типа DisplayAttribute ?
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38119210
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user73203. Если имена и описания должны браться из локализованных строк из ресурсов, то достаточно ли писать что-то вроде

Код: c#
1.
2.
[DisplayName(Locals.Models.Settings.Strings.MySetting)]
int MySetting { get; set; }



или лучше использовать более продвинутые для этого атрибуты из 4-го фреймворка, типа DisplayAttribute ?
По идее, DisplayAttribute сразу в себе и имя, и описание, и другую информацию содержит. Не является ли он заменой более ранним (по версии фреймворка) атрибутам DisplayName и Description.
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38120691
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слушайте, а есть более простой и очевидный способ, чем через атрибуты? А то сначала как-то неестественно дописываешь данные к объекту, а потом сложным образом эти данные достаёшь с помощью рефлексии, а не просто считыванием значений свойств. Выглядит как костыль.
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38120714
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

атрибуты - это и есть простой и очевидный способ. Метаданные, в частности, это и есть свойства свойств
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38121872
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если мне в дабловых и интовых свойствах надо минимальные и максимальные значения для каждого свойства приписать, это тоже лучше через атрибуты сделать? Подскажите, пожалуйста, какие из встроенных атрибутов для этого подойдут.
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38121887
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320А если мне в дабловых и интовых свойствах надо минимальные и максимальные значения для каждого свойства приписать, это тоже лучше через атрибуты сделать? Подскажите, пожалуйста, какие из встроенных атрибутов для этого подойдут.

RangeAttribute

всё что тебе нужно или почти всё есть в System.ComponentModel.DataAnnotations
...
Рейтинг: 0 / 0
Надо завести параметры разных типов с описаниями - как бы получше?
    #38125797
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я завёл DisplayAttribute для модели. Теперь как вытащить это в представление? Как привязать DisplayAttribute из модели представления в представление я знаю (через конвертер делаю), но как из модели провести через модель представления и далее в представление - непонятно. Ну, т. е. как громоздко это сделать я могу найти много способов, но как с минимум кода и по уму - не могу пока понять.

Получается, что во время инициализации модели представления надо вытащить из модели значения свойств DisplayAttribute и передать их в DisplayAttribute модели представления. Или что-то в этом роде. Но это такооой костыль...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Надо завести параметры разных типов с описаниями - как бы получше?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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