/ / Jak radzisz sobie z 'głębokimi' zależnościami z IoC i DI? - c #, iniekcja zależności, pojemnik jedności, kontener ioc

Jak radzisz sobie z "głębokimi" zależnościami z IoC i DI? - c #, iniekcja zależności, pojemnik jedności, kontener ioc

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 № 1

Twó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. "