Qual è l'"essenza" dell'iniezione di dipendenza? È l'idea di sostituire in modo dinamico / aspetti strutturali logici / strutturali di un programma in fase di runtime?
Tradizionalmente, questo viene fatto in codice tramite un contenitore DI. Ad esempio, utilizzando Structure Map in C #:
container.For<ICacheService>().Use<InMemoryCache>();
Tuttavia, ho scritto diversi programmi che iniettano codice tramite configurazione, in XML. Qualcosa come:
<cacheServiceProvider use="My.Namespace.InMemoryCache, MyAssembly"/>
Tale configurazione viene iterata all'avvio e le varie classi vengono istanziate per l'uso in tutto il programma.
È giusto dire che questa è una forma di DI? "Iniezione delle dipendenze per configurazione"? O DI richiede la configurazione nel codice e l'uso di alcuni sistemi di contenitori?
I loro altri aspetti filosofici o convenzionali richiesti per dire qualcosa sono "dipendenza iniettata" o sto completamente fraintendendo questo?