Ho eseguito il refactoring di un sistema esistente per utilizzare l'iniezione delle dipendenze e il lavoro è andato liscio.
Dopo un po 'ho notato che un gran numero di librerie interne è diventato dipendente dal framework DI che ho usato. Di conseguenza l'intero progetto ora dipende da questo framework di terze parti.
Ho visto un'ironia nel disaccoppiare tutte le dipendenze rendendole dipendenti da una libreria condivisa.
La mia prima reazione è stata quella di creare una libreria wrapper attorno al framework delle dipendenze. Pertanto, potrei sostituire questo quadro, se necessario. Dopo aver stimato il lavoro coinvolto, mi sono reso conto che l'API risultante sarebbe stata simile al framework esistente e quindi avrebbe reso più difficile la sua sostituzione. Quindi ho abbandonato l'idea.
La mia preoccupazione è che il framework DI che sto usando diventi obsoleto o debba essere sostituito.
Esiste un modello di sviluppo quando si lavora con DI che riduce l'accoppiamento tra un progetto e il framework DI?
DIFramework.Get<IService>()
non è in realtà iniezione di dipendenza; è un modello correlato chiamato Service Locator. A molte persone non piace Service Locator perché ti accoppia al framework e perché viene abusato troppo facilmente (come Singleton). Martin Fowler ha pubblicato un fantastico articolo su questi schemi: martinfowler.com/articles/injection.html