2016-07-06 19 views
2

Ich habe ein Problem mit StructureMap 4.0. Wenn ich mit StructureMap 3.0 arbeite, benutze ich ObjectFactory, um alle Instanzen zu konfigurieren, und es ist sehr einfach, die Instanz über ihre eigene Schnittstelle innerhalb der Lösung zu erhalten. Zum Beispiel:Bestehender Container in StructureMap 4.0

  1. an dem global.cs erkläre ich wie unten: ObjectFactory.Initialize (x => {. X.For() Verwenden Sie();}

  2. auf der anderen Klasse zum Beispiel Family.cs, ist es einfach Instanz von Peson zu bekommen: var person = ObjectFactory.GetInstance();

Allerdings habe ich Probleme bekam nach StructureMap bis 4,0 Aktualisierung es verwendet Container statt. von ObjectFactory und ich nicht finde irgendeinen Weg, um existierende Container zu bekommen. Ich meine, dieser Code ist falsch var person = container.GetInstance();

Wenn ich Container als eine statische Variable in global.cs deklariere, dann kann ich darauf von der Klasse Family.cs zugreifen. Ich mag diesen Weg nicht. Ich möchte, dass Container wie ObjectFactory funktioniert, indem ich einen vorhandenen Container abrufe, der in global.cs deklariert ist, aber ich weiß nicht, wie ich das machen soll.

Antwort

3

Der Weg, dies zu tun, ist IContainer als Konstruktor Argument in Ihrer Klasse zu nehmen. Sehen Sie dieses für mehr Info StructureMap

+0

Ich verstehe, was Sie meinen. Wie auch immer, mein Projekt ist in 3 Schichten aufgebaut. IContainer wird in Business Layer deklariert, aber ich möchte auf IContainer von DataAccess Layer zugreifen. Wie kann ich das machen? (Ich erinnere daran, dass DataAccess-Ebene unter Business-Ebene ist) –

+0

Was meinst du? IContainer wird in StructureMap deklariert, nicht in Ihrer Business-Schicht – erikkallen