Показать сообщение отдельно
Старый 11.10.2023, 00:43   #19  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от kair84 Посмотреть сообщение
Прошу прощение за Офтоп, У меня недавно возникла необходимость сделать подобное, и все получилось, не так красиво как я бы хотел но все же:
Знаю. Добивался этого же. Это по сути эмуляция наследования.
Какие в этом случае всплывают проблемы:
1. (Основная). Очевидно, что это работает только для новых методов. Т.е. нельзя в классе А сделать расширение стандартного метода (с использованием метода next), потому что next не позволяет себя вызывать "по условию". Точнее сделать-то можно, вот только когда сделаешь - получается, что можно было сделать проще без этих "выкрутасов".
2. (Организационная). Каждый разработчик должен будет этот "стиль" поддерживать при добавлении нового метода.
3. (Организационная). При наличии нескольких расширений одного класса - они формально могут применяться в любой последовательности. Следовательно код можно писать только такой, который не будет зависеть от последовательности вызова разных расширений.

Т.е. да, чисто академически - так можно написать. Но реально претворить это в жизнь.... весьма сложно, а главное - относительно без особой выгоды.
__________________
Возможно сделать все. Вопрос времени