Ich habe diesen ganzen Thread zweimal gelesen, und ich glaube, dass die Leute mit dem antworten, was sie wissen, und nicht mit dem, was gefragt wird.
Die ursprüngliche Frage von JP sieht so aus, dass er Objekte konstruiert, indem er einen Resolver und dann eine Reihe von Klassen sendet, aber wir gehen davon aus, dass diese Klassen/Objekte selbst Dienste sind, die reif für Injektionen sind. Was, wenn sie es nicht sind?
JP, wenn Sie die DI nutzen wollen et die Herrlichkeit der Vermischung von Injektion mit kontextuellen Daten, keines dieser Muster (oder vermeintlichen "Anti-Patterns") befasst sich speziell mit diesem Thema. Eigentlich läuft es darauf hinaus, ein Paket zu verwenden, das Sie bei einem solchen Unterfangen unterstützt.
Container.GetSevice<MyClass>(someObject1, someObject2)
... dieses Format wird nur selten unterstützt. Ich glaube, die Schwierigkeit, eine solche Unterstützung zu programmieren, zusammen mit der miserablen Leistung, die mit der Implementierung verbunden wäre, macht es für Open-Source-Entwickler unattraktiv.
Aber es sollte getan werden, weil ich in der Lage sein sollte, eine Fabrik für MyClass'es zu erstellen und zu registrieren, und diese Fabrik sollte in der Lage sein, Daten/Eingaben zu empfangen, die nicht in einen "Dienst" nur um der Übergabe von Daten willen gedrückt werden. Wenn es bei "Anti-Pattern" um negative Konsequenzen geht, dann ist das Erzwingen von künstlichen Diensttypen für die Übergabe von Daten/Modellen sicherlich negativ (ähnlich wie Ihr Gefühl, wenn Sie Ihre Klassen in einem Container verpacken. Es gilt derselbe Instinkt).
Es gibt jedoch Rahmenbedingungen, die helfen können, auch wenn sie ein wenig hässlich aussehen. Zum Beispiel, Ninject:
Erstellen einer Instanz mit Ninject mit zusätzlichen Parametern im Konstruktor
Das ist für .NET, ist beliebt, und ist noch lange nicht so sauber, wie es sein sollte, aber ich bin sicher, es gibt etwas in jeder Sprache, die Sie wählen, zu verwenden.