Вход на сайт
Инъекции при наследовании
687 просмотров
Перейти к просмотру всей ветки
Программист коренной житель
в ответ alex445 05.11.22 00:37
Хочу, чтобы в потомковых юзались некие объекты. Можно инъектировать их через конструкторы потомковых классов. Но ведь можно забыть, что в каждом потомковом должна быть такая инъекция.
Несколько раз прочитал, но так и не понял, что именно забыть и как это можно забыть? Можешь пояснить свой пример кодом?
если надо ЗАСТАВИТЬ использовать этот объект в потомках?
Заставить использовавать что-либо нельзя Даже если ты через 100 потомков протащишь какую-нибудь инекцию ты никогда не сможешь гарантировать, что все потомки используют именно этот объект. Да даже если там всего 1 потомок, ты тоже не можешь этого гарантировать :)
А то цепочка наследований может быть длинной, и потомков во всём дереве наследования может быть туева куча.
Значит проблемы с архитектурой. Тут либо рефакторить, либо страдать :)
И везде, в конструкторах всех потомков, писать base(service) как-то задалбывает. Тем более, что в реальности это выглядит куда длиннее - типаbase(IDatabaseContextService<MyDatabaseContext>)
Нет, в реальности это выглядит именно "base(service)". При передаче параметров не надо указывать их тип.