Sono nuovo di IoC e sto giocando con Unity. Diciamo "hai una soluzione con progetti" n "e vuoi usare Unity per registrare e risolvere le dipendenze. Diciamo che la tua root di composizione è in progetto un. Supponiamo che tu abbia i seguenti progetti nella soluzione.
un B c d
Diciamo un dipende da qualcosa in B, B dipende da qualcosa in c e c dipende da qualcosa in d
Ho visto come è possibile utilizzare l'iniezione del costruttore per risolvere il problema a => b dipendenza ma sono bloccato su come b "s dipendenza da c può essere risolto senza accesso al contenitore che è stato configurato e creato nel progetto un.
Qual è l'approccio per risolvere le dipendenze nidificate? C'è una discussione / blog / esempio che affronti la risoluzione di profonde dipendenze?
risposte:
7 per risposta № 1La tua root di composizione dovrebbe creare e distribuire tutte le tue dipendenze, comprese quelle annidate, quindi ha bisogno di riferimenti a tutti gli assembly rilevanti (a meno che tu non li stia fornendo usando la reflection).
Ad esempio, normalmente crei un'istanza di B
(fornendo la sua dipendenza, C
) prima di creare un A
. Se l'hai fatto "a mano", sarebbe simile a questo:
C c = new C();
B b = new B(c);
A a = new A(b);
Finché si registrano tutti i tipi appropriati, il framework di iniezione delle dipendenze li risolverà per te.
Per un grande articolo sull'argomento, vedi Miško Hevery "s"Mito dell'iniezione delle dipendenze: passaggio di riferimento".