Jestem nowy w IoC i gram z Unity. Powiedzmy, że masz rozwiązanie z "n" projektami i chcesz użyć Unity do zarejestrowania i rozwiązania zależności. Powiedzmy, że twój katalog główny jest w projekcie za. Załóżmy, że masz następujące rozwiązania w rozwiązaniu.
za b do re
Powiedzmy za zależy od czegoś w b, b zależy od czegoś w do i do zależy od czegoś w re
Widziałem, jak można użyć zastrzyku konstruktora, aby rozwiązać problem a => b zależność, ale utknąłem w jaki sposób b "s zależność od do można rozwiązać bez dostępu do kontenera, który został skonfigurowany i utworzony w projekcie za.
Jakie jest podejście do rozwiązywania zagnieżdżonych zależności? Czy istnieje dyskusja / blog / przykład dotyczący rozwiązania głębokich zależności?
Odpowiedzi:
7 dla odpowiedzi № 1Twój root kompozycji powinien tworzyć i dostarczać wszystkie zależności, w tym te zagnieżdżone, więc potrzebuje odwołań do wszystkich odpowiednich zestawów (chyba że je dostarczasz za pomocą refleksji).
Na przykład zwykle tworzysz instancję B
(dostarczając swoją zależność, C
) przed utworzeniem A
. Jeśli to zrobiłeś "ręcznie", wyglądałoby to tak:
C c = new C();
B b = new B(c);
A a = new A(b);
Dopóki rejestrujesz wszystkie odpowiednie typy, twój schemat wtrysku zależności rozwiąże je za Ciebie.
O świetny artykuł na ten temat, patrz Miško Hevery "s"Mit wstrzykiwania zależności: Przekazywanie referencji. "