Ich habe diesen ganzen Thread zweimal gelesen und ich denke, die Leute antworten mit dem, was sie wissen, nicht mit dem, was gefragt wird.
JPs ursprüngliche Frage sieht so aus, als würde er Objekte konstruieren, indem er einen Resolver und dann eine Reihe von Klassen sendet. Wir gehen jedoch davon aus, dass diese Klassen / Objekte selbst Dienste sind, die für die Injektion reif sind. Was ist, wenn sie nicht sind?
JP, wenn Sie DI nutzen möchten und den Ruhm des Mischens von Injektion mit Kontextdaten wünschen, spricht keines dieser Muster (oder angebliche "Anti-Muster") dies speziell an. Es läuft tatsächlich darauf hinaus, ein Paket zu verwenden, das Sie bei einem solchen Unterfangen unterstützt.
Container.GetSevice<MyClass>(someObject1, someObject2)
... dieses Format wird selten unterstützt. Ich glaube, dass die Schwierigkeit, eine solche Unterstützung zu programmieren, zusätzlich zu der miserablen Leistung, die mit der Implementierung verbunden wäre, sie für Open Source-Entwickler unattraktiv macht.
Aber es sollte getan werden, weil ich in der Lage sein sollte, eine Factory für MyClass zu erstellen und zu registrieren, und diese Factory sollte in der Lage sein, Daten / Eingaben zu empfangen, die nicht nur zum Zweck des Bestehens zu einem "Service" werden Daten. Wenn es bei "Anti-Pattern" um negative Konsequenzen geht, ist es sicherlich negativ, die Existenz künstlicher Servicetypen für die Übergabe von Daten / Modellen zu erzwingen (genau wie Sie das Gefühl haben, Ihre Klassen in einen Container zu packen. Der gleiche Instinkt gilt).
Es gibt jedoch Rahmenbedingungen, die helfen können, auch wenn sie etwas hässlich aussehen. Zum Beispiel Ninject:
Erstellen einer Instanz mit Ninject mit zusätzlichen Parametern im Konstruktor
Das ist für .NET, beliebt und nirgends so sauber wie es sein sollte, aber ich bin mir sicher, dass es in jeder Sprache, die Sie verwenden, etwas gibt.