![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
ivashkanet |
|
||||||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Не умею, но очень хочу научиться ![]() Ситуация такая: У класса есть поле, которое принимет только несколько значений (будем практиковаться на ... кошках): "черный кот", "белый кот", "рыжий кот". Для выбора значения удобнее использовать энумератор. Но в значение самого поля хотелось бы записывать строку с "именем" кота. Думаю обернуть это все в property, вот так:
Но что то мне не нравиться идея со switch. Что посоветуете? Нашел такую штуку:
В принципе она поможет избавится от switch. А если мне нужно записать в строку не имя энума, а что нибудь другое? Как в примере Cats.Black = "Black cat" (вся проблемма в пробеле ![]() Но может есть что получше? Жду ваших комментариев. |
||||||
|
|||||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Можно поставить над каждым элементом перечисления атрибут с именем кота, и дёргать его через GetCustomAttribute(). Проигрыш по сравнению с Enum.Parse небольшой, т.к. и в том и в другом случаях используется рефлекшн. Зато избавляемся от switch.
P.S. лучше не "энумератор", а "перечисление", иначе легко спутать с "итератором". P.S.(2) позволю себе обратить внимание на форму глаголов: правильно: "что делает? - не нравится" неправильно: "что делаеть? - не нравиться" правильно: "поможет что сделать? - избавиться" неправильно: "поможет что сделат? - избавится" -------------------- ![]() |
|||
|
||||
ivashkanet |
|
||||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Можно поподробнее, я не понял ![]()
Что-то типа такого? (хотя оно не пашет ![]() Блин ![]() ![]() ![]() |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Не совсем. Счас студию поставлю, тогда примерчик будет. -------------------- ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Неееет, не ставь. Мы ж договорились. Нееееттттт...... Напиши, что помнишь. Я потом сам дойду ![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Вот:
-------------------- ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
mr.DUDA,
![]() Ничего себе решеньеце А проще ни-ни? Уж лучше switch-ем ![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
там только одна строчка представляет для тебя сложность ? З.Ы. свитчем имхо кривее - нужно поддерживать get/set (любое изменение енума приведёт к необходимости править и get, и set), а тут - только поставил атрибут, и всё. -------------------- ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Это еще нужно будет показать заказчику ![]() А он у меня строптивый. Неужели это стандартный выход? |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Рефлекшн юзают в случае, когда описание в виде метаданных убирает повторяющиеся/дублирующие куски кода.
-------------------- ![]() |
|||
|
||||
Хоббит |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
гы .. мне кажется просто не раздавать имена котам или там энуму ... а искать другой выход... он по любому есть.. чем расставлять атрибуты
|
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Хоббит, а чем не нравится решение с атрибутами? Это почти что стандартный подход. Например, BLToolkit использует атрибуты членов enum для OR-маппинга.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
||||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Гы, ivashkanet, пора заводить собственную библиотеку "Ivashkanet.PrivateHelpers.dll" - не для глаз заказчика, ё-моё ![]() -------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |