Auf Kozmics Blog (vom 2009) empfiehlt er eine generische Fabrik, um Objekte aus dem Container abzurufen. Nun, das scheint mir ein Pseudo-Service-Locator zu sein. Also ich möchte hier die Meinung von Experten einholen.Castle Windsor Generic Typed Factory
public interface IGenericFactory
{
T Create<T>();
}
Kann ich damit Objekte aus dem Windsor Container holen? Gibt es Nachteile bei diesem Ansatz?
Update:
Eigentlich möchte ich es nur für ein paar Transienten zu bekommen, die ich will nicht für mehrere Fabriken erstellen. Mit einer Fabrik für alle diese Szenarien.
@ w0lf-Mit der generischen Fabrik Ansatz muss ich nicht auf den Container in meinem Code verweisen. Ich registriere es als getippte Fabrik und Boom. Injizieren Sie die Fabrik und erhalten Sie alles, was Sie wollen! (Eigentlich möchte ich es verwenden, um nur ein paar Transienten zu erhalten, für die ich nicht mehrere Fabriken erstellen möchte).Ich möchte sicherstellen, dass dies gut oder schlecht ist? – user1178376
@ user1178376 Das Problem mit diesem Ansatz ist, dass es tatsächlich ein Abstract Service Locator ist, der die Abhängigkeiten einer Klasse leicht verbergen kann. Um dies und die damit verbundenen Wartungsprobleme zu vermeiden, versuchen Sie es mit einfachen Konstruktorinjektionen und spezialisierten Fabriken. – GolfWolf
Beachten Sie auch den Kommentar von Nicholas Blumhardt. Er beschreibt es sehr deutlich: "Es könnte versuchen, buchstäblich alles zu schaffen - und das macht es schwieriger zu warten und zu testen." – Steven