Ich bin auf der Suche nach einem IoC-Container wie StructureMap in einer neuen Lösung. Die Projekte Lösung sind wie folgt:Dependency Injection - Layered Application
- Desktop.UI
- Desktop.Models
- Desktop.Views
- Desktop.Presenters
- Businesslogic
- Business
- Data Access
Wo Desktop.Models, BusinessLogic und DataAccess alle einen Verweis auf BusinessObjects haben.
Desktop.UI-Projekt wäre der Einstiegspunkt, wo DI konfiguriert werden sollte, aber ich möchte nicht wirklich einen Verweis auf DataAccess nur für DI hinzufügen.
Ich habe ein paar andere Fragen in dieser Richtung auf SO gesehen und eine Antwort war, ein separates Projekt für IoC zu erstellen, das auf die relevanten Projekte verweist und dann IoC-Projekt von Desktop.UI referenziert. Desktop.UI benötigt jedoch eine DI-Konfiguration, um Präsentatoren für Ansichten zu instanziieren, so dass ein separates Projekt nicht funktioniert.
Ich habe einige grundlegende Beispiele für die Definition von Registry-Klassen und die Verwendung der Scanning-Funktion StructureMap zur automatischen Erkennung der Registry-Klassen gesehen. Mein erster Gedanke war, diese Registry-Klassen in die Projekte zu stellen, für die sie konfiguriert sind, was jedoch dazu führt, dass alle Projekte auf StructureMap verweisen müssen.
Was ist der empfohlene Ansatz zum Einrichten von DI in einer mehrschichtigen Anwendung?
Wenn ich Sie wäre ich ein Rahmenprojekt schaffen würde ein Singleton IoC zu speichern und Ihre Bootstrapping-Code drin. –
@jameslewis Wie würde das mit dem UI-Projekt funktionieren, da das UI-Projekt DI für Präsentatoren benötigt, also wenn das IoC in einem separaten Projekt war, das die UI referenziert, konnte das IoC-Projekt nicht auch auf UI verweisen? –