Внедрение зависимостей в .NET | Марк Симан
В данной книге рассматриваются концепции DI и IOC. А также приводяться примеры взаимодействия с framework IOC контейнерами.
Приводяться примеры паттернов и антипаттрновэ.
Управление жизненным циклом зависимостей.
Преобразование абстракций в конкретные типы (Процесс разрешения)
DI - процесс внедрения типов при сохдании экземпляров.
Poor man DI - ручное явное внедрение без использования DI(IOC) контейнера.
DI(IOC) контейнер - инструмент позволяющий производить внедрение типов автоматически на основе некоторого, сконфигурированного пользователем, маппиинга (абстракция -> тип)
IOC подразумевает наличие библиотеки или фреймворка, контролирующего часть жизненного цикла приложения и предоставляющий интерфейс для реализации некоторый логики в рамках жизненного цикла разработчику.
Типы внедрений:
Внедрение в конструктор (обязательное)
Внедрение в свойство (необязательное, предполагает возможность наличия значеняи по умолчанию)
Внедрение в метод (внедрение при вызове метода)
- Появление механизма внедрения зависимостей
- Каталог DI
- DI самостоятельно
- DI-контейнеры