Я реконструював існуючу систему, щоб використовувати ін'єкцію залежності, і ця робота пройшла безперебійно.
Через деякий час я помітив, що велика кількість власних бібліотек стала залежною від структури, яку я використовував. Як результат, весь проект зараз залежить від цієї сторонні рамки.
Я бачив іронію в розв’язуванні всіх залежностей, роблячи їх залежними від спільної бібліотеки.
Моєю першою реакцією було створення бібліотеки обгортки навколо структури залежності. Тому я міг би замінити цю рамку за потреби. Оцінивши залучену роботу, я зрозумів, що отриманий API буде подібний до існуючого фреймворку, і тому ускладнює його заміну. Тому я відмовився від ідеї.
Мене хвилює те, що рамка DI, яку я використовую, застаріла або потребує заміни.
Чи існує закономірність розробки при роботі з DI, яка зменшує зв’язок між проектом та рамкою DI?
DIFramework.Get<IService>()
насправді не є ін'єкцією залежності; це пов'язаний зразок під назвою "Локатор послуг". Багато людей не люблять Локатор послуг через те, що він з'єднує вас з рамками та тому, що надто легко зловживати (наприклад, Singleton). У Мартіна Фаулера є надзвичайна стаття про ці зразки: martinfowler.com/articles/injection.html