![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Modus ponens
|
Как вы решаете такую проблему? Скажем, существуют 2 класса, назовем их Parent и Child. Parent может создавать Child'ов и после создания должен задать им свойство parent со ссылкой на самого себя, доступное только для чтения.
Пока мои варианты только такие: диспатчить ребенку событие о том, что он добавлен в список детей родителя. - недостатки: Если обработчик этого события оставить протектед, его можно будет переписать в детях наследующихся от Child'a - т.е. не надежно. Если обработчик сделать приватным, то получится одна дополнительная функция ![]() создать у ребенка интернал метод, который будет задавать все нужные свойства. - недостатки: Не знаю, как-то некрасиво да и не супер надежно в смысле если в дальнейшем наследоваться от Child'a.статическое свойство у родителя, через которое можно получить ссылку на родителя создавшего этого конкретного ребенка... - недостаки: Ну выглядит еще хуже, чем оба предыдущих варианта... как бы всерьез я это не рассматриваю, просто добавил потому что технически такое тоже возможно. Вобщем, интересует ваше мнение, что вы делаете в такой ситуации?
__________________
Hell is the possibility of sanity |
|
|||||
|
Первый способ мне кажется наиболее приемлемым.
Защитить обработчик событий от изменений на мой взгляд можно если сделать этот обработчик публичным методом другого финального интернал класса, например IntenalEventController. P.S: не уверен, конечно, что это правильно. Последний раз редактировалось alekslitvinenk; 01.06.2009 в 17:31. |
|
|||||
|
Скажите, при чем тут вобще DisplayList ?
Отношения родитель - ребенок могут присутствовать в чем угодно, а не только в иерархии отображаемых объектов |
|
|||||
|
тогда уж HierarchyList
|
|
|||||
|
.
|
Как Вам будет угодно =)
"сделать этот обработчик публичным методом другого финального интернал класса". Покажите лучше это чудо. |
|
|||||
|
стервочка (я мужик)
|
internal лучше. надёжнее и быстрее
|
|
|||||
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:33. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|