|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
Допустим, есть класс, в котором нужно хранить значения каких-либо признаков Код: c# 1. 2. 3. 4. 5. 6. 7.
потом я хочу сделать наследника Код: c# 1. 2. 3. 4. 5. 6.
В чем неудобство констант - во-первых, в наследниках нужно знать, на какой цифре закончилось определение констант, чтоб правильно продолжить. Во-вторых, в дальнейшей разработке нужно знать хотя бы, с чего начинаются имена констант, чтобы выбрать правильное имя у списка, который выдаст интеллисенс. Энум бы в этом смысле зарулил Код: sql 1.
только enum нельзя расширить. Чем вы пользуетесь в случае, если нужно определить набор констант, который требуется расширить в наследнике, при этом соблюсти нумерацию (без копания в коде предка) и получить преимущества интеллисенса? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 16:52 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
Pallarisтолько enum нельзя расширить Поясни. Бери енум и расширяй его в классе http://msdn.microsoft.com/en-us/library/vstudio/cc138362.aspx Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 16:55 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
Задача-то какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 16:56 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
МСУПоясни. Бери енум и расширяй его в классе enum Days2 { None = 0x0, Sunday = 0x1, Monday = 0x2, Tuesday = 0x4, Wednesday = 0x8, Thursday = 0x10, Friday = 0x20, Saturday = 0x40 } Как к enumu Days2 добавить еще значений в наследнике? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:04 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
Если под расширением имеется ввиду наследование, то чем не устроил вариант доукомплектования енума новыми членами? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:06 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
НахлобучЗадача-то какая? Визуальная система с рисованием. Базовый класс умеет создавать объекты 5 видов. Класс-наследник - еще скажем 5. Создавая в программе экземпляр класса-наследника, я хочу иметь доступ к типам всех 10 объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:06 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
МСУЕсли под расширением имеется ввиду наследование, то чем не устроил вариант доукомплектования енума новыми членами? А как? Я не умею :( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:07 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
PallarisМСУЕсли под расширением имеется ввиду наследование, то чем не устроил вариант доукомплектования енума новыми членами? А как? Я не умею :( Руками. Берешь и дописываешь :) На крайний вариант, можно в енуме ссылаться на член другого енума. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:11 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
МСУPallarisпропущено... А как? Я не умею :( Руками. Берешь и дописываешь :) А, ты в этом смысле. Тоже неудобно - это ж разработчику нужо лезть в базовый класс, его перекомпилиивать. К тому же по логике это не правильно - зачем мне в классе арифм.операций энумы для логических операций? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:13 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
PallarisВизуальная система с рисованием. Базовый класс умеет создавать объекты 5 видов. Класс-наследник - еще скажем 5. Создавая в программе экземпляр класса-наследника, я хочу иметь доступ к типам всех 10 объектов.Ну тут точно не константы нужны. Не зная всех деталей тяжело что-то советовать, но навскидку как-то так: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:19 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
Нахлобуч, стринги под такое дело - отстой ИМХО ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:24 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
Нахлобуч, это полный алес капут. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:29 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
Pallarisстринги под такое дело - отстой ИМХОТут можно и поспорить, но в любом случае нужно вводить некий уникальный идентификатор "формы". Можно использовать GUID, но это не особенно прозрачно. Можно пойти по пути именования пакетов в Java а-ля com.company.product.extensions.shapes.polygon.square. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:41 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
PallarisА, ты в этом смысле. Тоже неудобно - это ж разработчику нужо лезть в базовый класс, его перекомпилиивать. К тому же по логике это не правильно - зачем мне в классе арифм.операций энумы для логических операций? Выноси енумы в отдельную сборку. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:50 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
НахлобучТут можно и поспорить, но в любом случае нужно вводить некий уникальный идентификатор "формы".. Вот есть такое (к примеру): Код: sql 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.
со строками сюда не влезешь, т.к. просто не стоит. По-ходу варианта два - либо оставлять вот так, либо сделать единый энум в каком-нибудь внешнем статическом классе, и вместо int objCode писать ObjectFactoryClass.ObjectType. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:54 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
МСУ, угу, видимо так ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 17:55 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
PallarisМСУ, угу, видимо так Просто ты сам определись, либо тебе нужна прозрачная и красивая работа с енумами, либо ты хочешь полноценный IoC со всеми вытекающими, причем с подгрузкой плагинов и прочими фишками. Возможно не стоит так всё усложнять и проблема не стоит того? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 18:04 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
PallarisВот есть такое (к примеру):Зачем тут вообще наследование? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 18:06 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
НахлобучPallarisВот есть такое (к примеру):Зачем тут вообще наследование? Надо было привести текста на 100 кб со всей структурой приложения, чтоб стало понятнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 20:12 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
PallarisНадо было привести текста на 100 кб со всей структурой приложения, чтоб стало понятнее?То есть ты уже накропал 100 Кб кода и спрашиваешь, как организовать, фактически, ядро? Ну да дело хозяйское. Я к тому, что наследование -- самый сильный вид связи (которая coupling); coupling всегда стремятся уменьшать. Плюс, из кода действительно непонятно, какие проблемы решает наследование. У тебя должен быть набор независимых фабрик, ответственных за создание различного вида форм. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 20:26 |
|
Списки констант для наследников
|
|||
---|---|---|---|
#18+
НахлобучТо есть ты уже накропал 100 Кб кода и спрашиваешь, как организовать, фактически, ядро? Кода больше, чем 100 кб. Передавать int или enum - дело незатейливое, и вопрос скорее удобства. Переделывать ядро сильно не нужно для этого, 10 минут хватит. У тебя должен быть набор независимых фабрик, ответственных за создание различного вида форм. Я на данном этапе не вижу необходимости создавать отдельный класс только для создания объектов. Все в ядре происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 20:44 |
|
|
start [/forum/topic.php?fid=20&msg=38309915&tid=1404441]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
73ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 485ms |
0 / 0 |