Подтвердить что ты не робот

Контейнер для инъекций? Что оно делает?

Я читал на DI, и это кажется простой концепцией. То, что я не получаю, это контейнер. Позвольте сказать, что я хочу создать свой собственный контейнер. Глаголы, такие как "обнаружение", используются, и я не понимаю, как контейнер "обнаруживает", что был создан новый зависимый объект, и знать, чтобы вводить его зависимости. Мне кажется, что контейнер - это прославленный factory.

Может ли кто-нибудь объяснить, как фактически реализован контейнер, или, может быть, указать мне на ресурс?

Спасибо!

4b9b3361

Ответ 1

Это взято из документации Windsor

Инверсия управления

Инверсия управления - это принцип, используемый структурами как способ позволяют разработчикам расширять рамки или создавать приложения, используя Это. Основная идея заключается в том, что структура знает о программистах объектов и делает на них вызовы.

Это противоположность использованию API, где код разработчика делает ссылки на код API. Следовательно, рамки инвертируют управление: это не код разработчика, а основной делает звонки на основе некоторого стимула.

Вероятно, вы были в ситуациях, когда свет этого принципа, даже если вы не знали об этом.

Инверсия контейнера управления

Инверсия контрольного контейнера использует принцип, указанный выше, для (в двух словах) управлять классами. То есть, их создание, разрушение, времени жизни, конфигурации и зависимостей. Таким образом, классы не необходимо получить и настроить классы, от которых они зависят. Эта резко уменьшает сцепление в системе и, как следствие, упрощает повторное использование и тестируемость.

Существует некоторая путаница, созданная людьми, которые считают, что "инверсия of Control" является синонимом "Inversion of Control Container". В виде заявил, что обращение к управлению является более широким принципом.

Часто люди думают, что речь идет о "инъекции" и трансляции что это основная цель контейнеров IoC. По факту, "инъекция" является следствием, средством отделить, а не от первичной Цель.

Ответ 2

Возможно, вы захотите прочитать эту книгу Инъекция зависимостей в .NET... Я ее уже прочитал, и я настоятельно рекомендую вам ее прочитать. Сначала он дает приятное и проницательное объяснение по DI, а затем показывает код и образцы реальных приложений DI.

Из этой книги и в нескольких словах...

"DI container is the technology used to support the DI technique" Page 55