Ich habe ein vorhandenes System überarbeitet, um die Abhängigkeitsinjektion zu verwenden, und diese Arbeit verlief reibungslos.
Nach einer Weile bemerkte ich, dass eine große Anzahl von internen Bibliotheken von dem von mir verwendeten DI-Framework abhängig wurde. Infolgedessen hängt das gesamte Projekt jetzt von diesem Drittanbieter-Framework ab.
Ich sah eine Ironie darin, alle Abhängigkeiten zu entkoppeln, indem ich sie von einer gemeinsamen Bibliothek abhängig machte.
Meine erste Reaktion bestand darin, eine Wrapperbibliothek um das Abhängigkeitsframework zu erstellen. Daher könnte ich dieses Framework bei Bedarf ersetzen. Nachdem ich die damit verbundene Arbeit eingeschätzt hatte, stellte ich fest, dass die resultierende API dem vorhandenen Framework ähneln und es daher schwieriger machen würde, es zu ersetzen. Also habe ich die Idee aufgegeben.
Ich mache mir Sorgen, dass das DI-Framework, das ich verwende, veraltet ist oder ersetzt werden muss.
Gibt es bei der Arbeit mit DI ein Entwicklungsmuster, das die Kopplung zwischen einem Projekt und dem DI-Framework verringert?
DIFramework.Get<IService>()
ist eigentlich keine Abhängigkeitsinjektion. Es handelt sich um ein ähnliches Muster namens Service Locator. Viele Leute mögen Service Locator nicht, weil es Sie mit dem Framework verbindet und zu leicht missbraucht wird (wie Singleton). Martin Fowler hat einen tollen Artikel über diese Muster: martinfowler.com/articles/injection.html