Wie gehen Sie mit Deep-Abhängigkeiten von IoC und DI um?

8

Ich bin neu bei IoC und spiele mit Unity. Nehmen wir an, Sie haben eine Lösung mit 'n' Projekten und möchten Unity verwenden, um die Abhängigkeiten zu registrieren und aufzulösen. Nehmen wir an, Ihr Kompositionswurzel befindet sich in Projekt a . Nehmen wir an, Sie haben die folgenden Projekte in der Lösung.

a b c d

Sagen wir, a hängt von etwas in b ab, b hängt von etwas in c und ab c hängt von etwas in d

ab

Ich habe gesehen, wie Sie die Konstruktorinjektion verwenden können, um das a = & gt; b Abhängigkeit, aber ich bin fest, wie b Abhängigkeit von c aufgelöst werden kann, ohne Zugriff auf den Container, der in Projekt a .

Was ist der Ansatz zum Auflösen der verschachtelten Abhängigkeiten? Gibt es eine Diskussion / ein Blog / Beispiel, das die Auflösung tiefer Abhängigkeiten anspricht?

    
jparram 11.11.2010, 16:08
quelle

1 Antwort

7

Ihr Kompositionsstamm sollte alle Ihre Abhängigkeiten erstellen und liefern, einschließlich verschachtelter, so dass Verweise auf alle relevanten Assemblys benötigt werden (es sei denn, Sie liefern sie mit Reflektion).

Beispielsweise erstellen Sie normalerweise eine Instanz von B (indem Sie ihre Abhängigkeit angeben, C ), bevor Sie eine A erstellen. Wenn Sie es von Hand gemacht haben, würde es so aussehen:

%Vor%

Solange Sie alle geeigneten Typen registrieren, löst Ihr Abhängigkeits-Injection-Framework diese für Sie auf.

Einen großartigen Artikel zu diesem Thema finden Sie in Miško Heverys " Dependency Injection Mythos: Reference Passing . "

    
Jeff Sternal 11.11.2010, 16:19
quelle