
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.10.2018, 20:35
|
|||
|---|---|---|---|
|
|||
Дополнение в дочернем классе метода родительского |
|||
|
#18+
Здравствуйте. Такой вопрос. Есть класс с определенным методом, дополняющим метод родителя. Структура такая: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Внутри этого метода родительский класс перебирает все свойства объекта (через RTTI) и выполняет некоторые действия в зависимости от типа свойства. Некоторые типы там не рассмотрены, они появляются только в дочернем классе, и в каждом из дочерних могут появляться свои. Нужно сделать так, чтобы дочерний класс обработал все свойства, пропущенные родительским классом. Как это можно реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.10.2018, 20:46
|
|||
|---|---|---|---|
Дополнение в дочернем классе метода родительского |
|||
|
#18+
тгз, инхеритед + до-обработка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.10.2018, 21:11
|
|||
|---|---|---|---|
|
|||
Дополнение в дочернем классе метода родительского |
|||
|
#18+
Да, inherited - это понятно. А вот с "до-обработкой" проблемы. Как понять, какие свойства не были обработаны родительским классом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.10.2018, 21:30
|
|||
|---|---|---|---|
|
|||
Дополнение в дочернем классе метода родительского |
|||
|
#18+
Понял, "до-обработка" - это обработка дочерним классом до вызова "inherited", правильно? Тогда в каждом из родительских классов получать список свойств заново и обрабатывать только те, которые данный класс может обработать? Не будет слишком дорогой операцией получение каждый раз этого списка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.10.2018, 22:05
|
|||
|---|---|---|---|
Дополнение в дочернем классе метода родительского |
|||
|
#18+
тгзПонял, "до-обработка" - это обработка дочерним классом до вызова "inherited", правильно? Тогда в каждом из родительских классов получать список свойств заново и обрабатывать только те, которые данный класс может обработать? Не будет слишком дорогой операцией получение каждый раз этого списка? 1. Помечай, флажки ставь. 2. Кому какое дело, кроме тебя, дорогая ли "эта" операция, или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.10.2018, 22:42
|
|||
|---|---|---|---|
|
|||
Дополнение в дочернем классе метода родительского |
|||
|
#18+
тгз...выполняет некоторые действия в зависимости от типа свойства . Некоторые типы там не рассмотрены, они появляются только в дочернем классе , и в каждом из дочерних могут появляться свои. Нужно сделать так, чтобы дочерний класс обработал все свойства, пропущенные родительским классом. Как это можно реализовать?очевидно же - в дочернем обрабатывать свойства тех типов , которые в нем и появляются. если в дочернем добавлены свойства типов "рассматриваемых" родительским - родительский же их увидит через RTTI и обработает, разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.10.2018, 22:53
|
|||
|---|---|---|---|
Дополнение в дочернем классе метода родительского |
|||
|
#18+
тгзНужно сделать так, чтобы дочерний класс обработал все свойства, пропущенные родительским классом. Как это можно реализовать? Составить список свойств (TStringList) и помечать обработанные свойства флажком integer(TStringList.Object[i]) := 1; Соответственно, обработанные более не обрабатывать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.10.2018, 14:53
|
|||
|---|---|---|---|
|
|||
Дополнение в дочернем классе метода родительского |
|||
|
#18+
тгз, Я так понял, что для каждого свойства может быть своя функция.. и раз RTTI уже используется, то попробуй использовать атрибуты. Атрибутами можно помечать свойства, которые надо обрабатывать. Атрибуты могут быть параметризованными, например иметь ссылку на процедуру обработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.10.2018, 15:32
|
|||
|---|---|---|---|
|
|||
Дополнение в дочернем классе метода родительского |
|||
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2040329]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
178ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 535ms |

| 0 / 0 |
