Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Инъекции при наследовании

05.11.22 00:37
Инъекции при наследовании
 
alex445 коренной житель
Последний раз изменено 05.11.22 00:40 (alex445)

Есть базовый и потомковые классы. Хочу, чтобы в потомковых юзались некие объекты. Можно инъектировать их через конструкторы потомковых классов. Но ведь можно забыть, что в каждом потомковом должна быть такая инъекция. Тогда переношу ссылку на объект в базовый класс, инъектирую объект через конструктор базового, ну и по цепочке потомковых конструкторов передаю эту инъекцию на уровень базового. Ну а потом в потомках использую эту ссылку на объект из базового класса. Типа такого


class Base

{

public Base(IService service)

}


class Descendant

{

public Descendant(IService service) : base(service)

}


Вопрос - а никак нельзя по-другому обойтись, без портянок передачи инъекции в базовый по всей цепочке потомков, если надо ЗАСТАВИТЬ использовать этот объект в потомках? А то цепочка наследований может быть длинной, и потомков во всём дереве наследования может быть туева куча. И везде, в конструкторах всех потомков, писать base(service) как-то задалбывает. Тем более, что в реальности это выглядит куда длиннее - типа


base(IDatabaseContextService<MyDatabaseContext>)


А, да - у нас не синглетоны, а надо, чтобы в каждом объекте свой экземпляр MyDatabaseContext юзался.

 

Перейти на