Die beste Möglichkeit, die Anwendungskonfiguration zu injizieren

8

Nun, ich mache meinen Ausflug in diese fantastische Seite mit einer Frage über die richtige Art, Konfigurationseinstellungen in Anwendungskomponenten zu injizieren. Also, die Übersicht ist: Ich habe eine Anwendung geschrieben in C # .Net 3.5. Es besteht aus 3 Baugruppen - einem Core, einem Data und einem Service. Die Daten & amp; Service-Assemblies erfordern Einstellungen, die aus der App.config abgerufen werden. Dies geschieht über eine Einstellungsdatei, z. B.

Code:

%Vor%

Konfig:

%Vor%

Nun werden die Assemblys alle mit Hilfe von StructureMap für IoC eingerichtet - was meiner Meinung nach die Antwort auf das sein sollte, wonach ich suche, aber ich kann es einfach nicht sehen!

IoC:

%Vor%

Ich möchte eine bereits in den IoC-Container aufgefüllte Konfigurationsklasse einfügen, so dass diese Einstellungen für diese Assembly verwendet werden, NICHT die in der Einstellungsdatei / app.config angegebenen. Also vielleicht:

%Vor%

Ich hoffe, ich habe hier genug Details zur Verfügung gestellt - vergebe einem Neuling, wenn ich nicht habe und lass mich bitte wissen, was sonst noch hilfreich wäre, um das zu beantworten!

    
Bertie 04.10.2011, 14:08
quelle

1 Antwort

3

Also, nach viel Suchen und Versuch und Irrtum, wurde ich mit @ default.kramer's link vorgestellt, dem ich direkt gefolgt bin! Mit ein wenig Versuch und Irrtum, wieder (am besten meiner Meinung nach), schaffte ich es, die Lösung zu bekommen, nach der ich suchte. Nun, während Sie dem Link folgen können (und ich würde dies sehr empfehlen), werde ich die Lösung zu meiner Frage veröffentlichen, während ich sie implementiere. Hoffentlich könnte dies jemandem mit einem ähnlichen Problem helfen.

Also habe ich jetzt meine Konfigurations-Setup-Klasse so:

%Vor%

Nun, bevor ich eine Einstellungsdatei verwendet habe, um die Konfiguration aus der app.config-Datei abzurufen. Das war natürlich gut, um sicherzustellen, dass ich meine Konfigurationseinstellungen flexibel ändern konnte, aber das Problem war, dass ich diese Einstellungen nicht einfach testen konnte. Say 9/10 Tests erforderten, dass der Dienst aktiv war, aber 1 Test wollte "ServiceIsActive = false" testen, jetzt bin ich in Schwierigkeiten.

Jetzt kann ich jedoch die Konfiguration aus dem Test injizieren:

%Vor%

Und dann in der realen Welt kann ich die Einstellungen von app.config bekommen:

%Vor%

Und dann sieht die eigentliche Config-Klasse wie folgt aus:

%Vor%

Der Vollständigkeit halber sieht die Schnittstelle so aus:

%Vor%

Und schließlich sieht die Konfigurationsdatei so aus:

%Vor%

Jetzt wird jeder mit einem guten Auge "MyNamespace.XmlConfigurator" sehen. Ich habe dies auf einer meiner Google-Reisen gefunden und der Code ermöglicht es, eine Xml-Konfiguration in eine Klasse Ihrer Wahl zu deserialisieren (wie in diesem Beispiel gezeigt). Um sicherzustellen, dass Sie über den vollständigen Code verfügen, damit diese Technik funktioniert, finden Sie im Folgenden den Code für den XmlConfigurator. Ich kann mich nicht erinnern, wo ich darauf gestoßen bin, aber ein großes Dankeschön an die Person, die es geschrieben hat !!

%Vor%

Und da hast du es! Ich hoffe, dies ermöglicht jedem mit einem ähnlichen Problem, es zu lösen und ist klar genug, um zu folgen!

    
Bertie 10.10.2011 09:00
quelle