Castle Windsor IOC: Konstruktorparameter an untergeordnete Komponenten übergeben

Der folgende Code dient nur Demozwecken.

Nehmen wir an, ich habe 2 Komponenten (businessService und dataService) und eine UI-Klasse.

UI-Klasse benötigt einen Business-Service, businessService benötigt einen dataService und dataService benötigt einen connectionString.

Form die UI-Klasse, die ich brauche, um den Business-Service aufzulösen, so schreibe ich den folgenden Code:

var service = container.Resolve<BusinessService>(new { dependancy = "con string 123" }));

Bitte beachten Sie, dass die Abhängigkeit der Konstruktorparameter connectionString ist.

Aber der obige Code funktioniert nicht und besagt, dass dataService eine nicht zufriedenstellende Abhängigkeit erwartet.

Die Komponente 'dataService' kann nicht erstellt werden, da Abhängigkeiten zu erfüllen sind. dataService wartet auf folgende Abhängigkeiten:

Keys (Komponenten mit bestimmten Schlüsseln) - Abhängigkeit, die nicht registriert wurde.

Also als Workaround mache ich das:

var service = container.Resolve<BusinessService>(new { dataService = container.Resolve<IDataService>(new { dependancy = "123" }) });

Aber aus Sicht des Designs, des Codierungsstils und vieler Perspektiven ist dies kein guter Weg, dies zu tun.

So bitte, wenn Sie mitteilen können, warum es nicht auf einfache Weise funktioniert, oder wenn Sie eine bessere Problemumgehung haben, teilen Sie dies bitte mit.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage