|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
Делаю по шаблону MVVM модель. У меня есть объект настроек и кучка параметров разных типов (инты, даблы, очень большие коллекции). Хочу, чтобы у каждого параметра были кроме значения ещё и имя (понятное пользователю - т. е. просто имя переменной не пойдёт) и описание (строка). Как лучше это реализовать? Первое, что в голову пришло - завести для всех параметров тип MyParameter с полями: имя (строка), значение (object), описание (строка). Вот только загвоздка со значением типа объект, особенно, если этот объект - коллекция. Не будет ли большая потеря производительности при обращении к этим коллециям, и вообще, когда каждое значение параметра надо приводить к своему типу (т. е. объект к инту, объект к даблу и т. д.)? Второй вариант придумал - завести отдельный тип для настроек, которые будут участвовать в расчёте - без имён и пояснений, только со значениями параметров. И отдельный тип для настроек, где все эти пояснения будут, но он не будет участвовать в расчёте. Просто при вызове функции расчёта я буду создавать объект настроек без пояснений из объекта настроек с пояснениями, и передавать на расчёт первый. При этом хотя и параметры-значения скопируются (это не ссылочные типы) - это не страшно, т. к. их немного, но массив передастся по ссылке - т. е. потери производительности сильной быть не должно. Единственное, что меня смущает, так это то, что я оба этих типа настроек хочу поместить в модель, а не в модель представления, т. к. считаю, что пояснения и имена параметров должны быть в модели. Кто как может это прокомментировать и предложить более лучшие варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2013, 13:39 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
Да, второй вариант предполагает большое дублирование типов, ибо там на самом деле не просто настройки, а вложенные в несколько слоёв типы разных настроек, и только уже их поля являются интами, даблами или коллекциями. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2013, 13:44 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
Как вариант подумал, что тип настроек без пояснений можно сделать без вложенности - просто приписать к названиям полей этакий путь в объекте настроек. Заодно избавлюсь и от лишних "разыменований указателей" длинных путей в объекте настроек. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2013, 13:45 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
Но чего-то всё равно не то получается с типом настроек с пояснениями - у него-то придётся опять писать все значения типом object, а при приведении к типу настроек без пояснений надо будет запоминать, к какому типу приводить... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2013, 13:50 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
user7320, для метаданных используй аттрибуты ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2013, 13:54 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
pationuser7320, для метаданных используй аттрибуты В смысле, не понял? Я хочу имена и описания параметров в модель представления и далее в представления выводить. Метаданные и атрибуты мне в этом помогут? Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2013, 14:01 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
pationuser7320, для метаданных используй аттрибуты +1 также как в ASP.NET атрибут DisplayName ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2013, 14:12 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
user7320pationuser7320, для метаданных используй аттрибуты В смысле, не понял? Я хочу имена и описания параметров в модель представления и далее в представления выводить. Метаданные и атрибуты мне в этом помогут? Как? для наименования DisplayNameAttribute для описания DescriptionAttribute ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2013, 15:00 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
Спасибо, прочитал про атрибуты (в который раз). В связи с этим возникли вопросы при использовании атрибутов с MVVM. 1. Могут ли свойства контролов в представлениях привязываться к значениям атрибутов модели напрямую? Т. е. можно ли написать что-то вроде: Код: xml 1.
где DisplayNameAttribute установлен для свойства объекта, привязываемого к группе контролов, одним из которых является данный текстбокс? 2. Если не 1, то какой типичный способ использования атрибутов в представлениях? Надо в модели представления с помощью рефлексии достать значения атрибутов модели, раскидать их по свойствах модели представления и только потом уже привязывать представления к свойствам модели представления? 3. Если имена и описания должны браться из локализованных строк из ресурсов, то достаточно ли писать что-то вроде Код: c# 1. 2.
или лучше использовать более продвинутые для этого атрибуты из 4-го фреймворка, типа DisplayAttribute ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2013, 11:14 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
user73203. Если имена и описания должны браться из локализованных строк из ресурсов, то достаточно ли писать что-то вроде Код: c# 1. 2.
или лучше использовать более продвинутые для этого атрибуты из 4-го фреймворка, типа DisplayAttribute ? По идее, DisplayAttribute сразу в себе и имя, и описание, и другую информацию содержит. Не является ли он заменой более ранним (по версии фреймворка) атрибутам DisplayName и Description. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2013, 11:19 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
Слушайте, а есть более простой и очевидный способ, чем через атрибуты? А то сначала как-то неестественно дописываешь данные к объекту, а потом сложным образом эти данные достаёшь с помощью рефлексии, а не просто считыванием значений свойств. Выглядит как костыль. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2013, 07:45 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
user7320, атрибуты - это и есть простой и очевидный способ. Метаданные, в частности, это и есть свойства свойств ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2013, 08:42 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
А если мне в дабловых и интовых свойствах надо минимальные и максимальные значения для каждого свойства приписать, это тоже лучше через атрибуты сделать? Подскажите, пожалуйста, какие из встроенных атрибутов для этого подойдут. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2013, 17:02 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
user7320А если мне в дабловых и интовых свойствах надо минимальные и максимальные значения для каждого свойства приписать, это тоже лучше через атрибуты сделать? Подскажите, пожалуйста, какие из встроенных атрибутов для этого подойдут. RangeAttribute всё что тебе нужно или почти всё есть в System.ComponentModel.DataAnnotations ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2013, 17:06 |
|
Надо завести параметры разных типов с описаниями - как бы получше?
|
|||
---|---|---|---|
#18+
Я завёл DisplayAttribute для модели. Теперь как вытащить это в представление? Как привязать DisplayAttribute из модели представления в представление я знаю (через конвертер делаю), но как из модели провести через модель представления и далее в представление - непонятно. Ну, т. е. как громоздко это сделать я могу найти много способов, но как с минимум кода и по уму - не могу пока понять. Получается, что во время инициализации модели представления надо вытащить из модели значения свойств DisplayAttribute и передать их в DisplayAttribute модели представления. Или что-то в этом роде. Но это такооой костыль... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2013, 17:47 |
|
|
start [/forum/topic.php?fid=20&msg=38117998&tid=1405286]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 465ms |
0 / 0 |