Ich benutze Castle Windsor für ein Tierprojekt, an dem ich gerade arbeite. Ich fange an zu bemerken, dass ich den IoC-Container an verschiedenen Stellen in meinem Code aufrufen muss, um neue Objekte zu erstellen. Diese Abhängigkeit vom Container macht die Pflege meines Codes schwieriger.IoC, Wo setzt du den Container?
Es gibt zwei Lösungen, die ich verwendet habe, um dieses Problem
ich um die Behälter abstrakte Fabriken als Wrapper zu erstellen versucht zu lösen, die ich in Teile meiner Anwendung injizieren könnte, die Objekte erstellen müssen. Das funktioniert, hat aber einige Nachteile, da Castle es schwer hat, seinen eigenen Container als Abhängigkeit zu injizieren. Also muss ich das per Hand machen, diese Art besiegt den gesamten Zweck des IoC-Containers.
Ich habe die Hauptanwendung Controller-Klasse verwendet, um den IoC-Container zu wickeln und als zentrale Factory/Repository zu arbeiten. Das war sehr erfolgreich, aber diese Klasse wird zu groß und wirkt wie ein zentrales Gottobjekt, fast jedes andere Objekt hat einen Bezug darauf.
Beide Lösungen funktionieren, aber beide haben ihre Nachteile. Ich bin neugierig, ob andere Leute das gleiche Problem haben und bessere Lösungen gefunden haben.
bearbeiten Das Problem ist nicht für Objekt A, das hier Objekt B. hängt ich in der Regel nur Konstruktor Injektion verwenden und alles funktioniert. Manchmal habe ich Objekte vom Typ A, die während ihrer Lebensdauer eine variable Anzahl anderer Objekte vom Typ B erzeugen müssen. Ich bin mir nicht sicher, wie ich das machen soll.
@Blair Conrad: Die Wartungsprobleme sind bis jetzt nicht streng. Ich hatte einige Klassen abhängig von der Container-Objekt aufrufen container.Resolve <>. Und ich möchte meinen Code nicht von meiner Infrastruktur abhängig machen. Ich probiere immer noch Dinge aus, also habe ich festgestellt, dass ich viel Code ändern musste, als ich für dieses Projekt von Ninject nach Castle wechselte.
@flowers: Hmm. Ich mag deine Fäuste-Lösung. Es kombiniert die Dinge, die von beiden Lösungen funktionieren, die ich ausprobiert habe. Ich denke, ich dachte immer noch zu viel an Objekte und nicht genug an Schnittstellen/Verantwortlichkeiten. Ich habe eigens gebaute Fabriken ausprobiert, aber ich möchte, dass sie den Container hinter den Kulissen benutzen, um die Objekte zu erstellen, und ich habe noch nicht herausgefunden, wie ich den Container sauber in Objekte zerlegen kann.
Ich bin neugierig, und die Antworten können uns helfen zu beantworten. Welche Wartungsprobleme hatten Sie? –