Refaktoryzowałem istniejący system, aby używać wstrzykiwania zależności, a ta praca przebiega sprawnie.
Po jakimś czasie zauważyłem, że duża liczba bibliotek wewnętrznych stała się zależna od używanego przeze mnie środowiska DI. W rezultacie cały projekt zależy teraz od tego frameworka innej firmy.
Widziałem ironię w rozdzielaniu wszystkich zależności, uzależniając je od wspólnej biblioteki.
Pierwszą moją reakcją było stworzenie biblioteki otoki wokół struktury zależności. Dlatego w razie potrzeby mógłbym zastąpić te ramy. Po oszacowaniu zaangażowanej pracy zdałem sobie sprawę, że wynikowy interfejs API będzie podobny do istniejącego frameworka, a zatem utrudni to jego wymianę. Więc porzuciłem ten pomysł.
Obawiam się, że środowisko DI, z którego korzystam, staje się przestarzałe lub wymaga wymiany.
Czy podczas pracy z DI istnieje wzorzec programowania, który zmniejsza sprzężenie między projektem a ramą DI?
DIFramework.Get<IService>()
nie jest tak naprawdę wstrzykiwaniem zależności; jest to powiązany wzorzec o nazwie Service Locator. Wiele osób nie lubi Lokalizatora usług, ponieważ łączy Cię on z frameworkiem i ponieważ jest zbyt łatwy do nadużywania (jak Singleton). Martin Fowler ma wspaniały artykuł o tych wzorach: martinfowler.com/articles/injection.html