Как вы справляетесь с «глубокими» зависимостями с помощью IoC и DI? - PullRequest
9 голосов
/ 11 ноября 2010

Я новичок в IoC и играю с Unity.Допустим, у вас есть решение с n проектами, и вы хотите использовать Unity для регистрации и устранения зависимостей.Допустим, корень вашей композиции находится в проекте a .Допустим, у вас есть следующие проекты в решении.

abcd

Допустим, a зависит от чего-то в b , b зависит от чего-то в c , а c зависит от чего-то в d

Я видел, как вы можетеиспользуйте инъекцию в конструктор, чтобы разрешить зависимость a => b , но я застрял на том, как можно разрешить зависимость b от c без доступа к настроенному контейнеруи создан в проекте a .

Каков подход для разрешения вложенных зависимостей?Есть ли обсуждение / блог / пример, посвященный разрешению глубоких зависимостей?

1 Ответ

8 голосов
/ 11 ноября 2010

Ваш корень композиции должен создавать и доставлять все ваши зависимости, включая вложенные, поэтому ему нужны ссылки на все соответствующие сборки (если вы не предоставляете их с помощью отражения).

Например, обычно вы создаете экземпляр B (с указанием его зависимости C) перед созданием A. Если бы вы сделали это « вручную », это выглядело бы так:

C c = new C();
B b = new B(c);
A a = new A(b);

Пока вы регистрируете все соответствующие типы, ваша инфраструктура внедрения зависимостей разрешит их для вас.

Отличная статья на эту тему приведена в «Мише Хевери» « Миф о внедрении зависимости: прохождение ссылки ».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...