/ / Wie gehen Sie mit 'tiefen' Abhängigkeiten von IoC und DI um? - c #, Abhängigkeitsinjektion, Unity-Container, Ioc-Container

Wie gehen Sie mit "tiefen" Abhängigkeiten von IoC und DI um? - c #, Abhängigkeitsinjektion, Unity-Container, Ioc-Container

Ich bin neu in IoC und spiele mit Unity. Lassen Sie "sagen, Sie haben eine Lösung mit" n "Projekten und Sie möchten mit Unity die Abhängigkeiten registrieren und auflösen. Nehmen wir an, Ihr Kompositionsstamm befindet sich im Projekt ein. Sagen wir, Sie haben die folgenden Projekte in der Lösung.

ein b c d

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

Ich habe gesehen, wie Sie die Konstruktorinjektion verwenden können, um das Problem zu lösen a => b Abhängigkeit, aber ich bin fest, wie b "s Abhängigkeit von c kann ohne Zugriff auf den Container aufgelöst werden, der im Projekt konfiguriert und erstellt wurde ein.

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 behandelt?

Antworten:

7 für die Antwort № 1

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

Zum Beispiel erstellen Sie normalerweise eine Instanz von B (liefert seine Abhängigkeit, C) vor dem Erstellen eines A. Wenn du es getan hast "von Hand", würde es so aussehen:

C c = new C();
B b = new B(c);
A a = new A(b);

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

Für einen tollen Artikel zu diesem Thema, siehe Miško Hevery "s"Dependency Injection Mythos: Referenzübergabe. "