Re[21]: почему в C# до сих пор нет наследования конструкторов?
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.12.22 16:57
Оценка: +2
Здравствуйте, Sharov, Вы писали:

S>Скорее всего унаследуюсь от TR, но агрегирую SR, ибо надо позицию учитывать. Как-то так.

Ну, агрегировать (декорировать) надо скорее TextReader, потому что иначе у вас не будет возможности применить ваши наработки к альтернативным наследникам (например, StringReader).
S>>Это простое упражнение помогает прояснить различия между агрегацией, наследованием реализации, и наследованием интерфейса.

S>Мне казалось, я эту разницу понимаю.

Ну, вот как раз тут и начинаются всякие интересные приплызды. Скажем, невозможно не отнаследоваться от TextReader — не существует интерфейса, который можно было бы реализовать при помощи прямого потомка object.
TextReader тащит за собой довольно-таки толстую реализацию, отказаться от которой вы не можете. Ещё в нём есть всякие неочевидные зависимости — повторюсь: какие методы вы будете перекрывать? Сможете сказать, не глядя в исходники? Как там с асинхронщиной — будет унаследованная реализация вам помогать или мешать? Может быть, вам захочется запретить асинхронное использование вашего декоратора — ан нет, нельзя, нет такого способа.

И это ещё относительно хорошо продуманный базовый класс. Специально разработанный для того, чтобы от него наследовались.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.