J'ai lu tout ce fil, deux fois, et je pense que les gens répondent par ce qu'ils savent, pas par ce qui est demandé.
La question d'origine de JP semble être la construction d'objets en envoyant un résolveur, puis un tas de classes, mais nous supposons que ces classes / objets sont eux-mêmes des services, mûrs pour l'injection. Et s'ils ne le sont pas?
JP, si vous cherchez à tirer parti de la DI et que vous désirez la gloire de mélanger l'injection avec des données contextuelles, aucun de ces modèles (ou supposés "anti-modèles") ne traite spécifiquement de cela. Cela revient en fait à utiliser un package qui vous soutiendra dans une telle entreprise.
Container.GetSevice<MyClass>(someObject1, someObject2)
... ce format est rarement pris en charge. Je crois que la difficulté de programmer un tel support, ajoutée aux performances misérables qui seraient associées à la mise en œuvre, le rend peu attrayant pour les développeurs open source.
Mais cela devrait être fait, car je devrais pouvoir créer et enregistrer une usine pour MyClass'es, et cette usine devrait pouvoir recevoir des données / entrées qui ne sont pas poussées à devenir un "service" juste pour le plaisir de passer Les données. Si «l'anti-modèle» concerne des conséquences négatives, alors forcer l'existence de types de services artificiels pour transmettre des données / modèles est certainement négatif (comparable à votre sentiment de regrouper vos classes dans un conteneur. Le même instinct s'applique).
Il y a un cadre qui peut aider, même s'il a l'air un peu moche. Par exemple, Ninject:
Création d'une instance à l'aide de Ninject avec des paramètres supplémentaires dans le constructeur
C'est pour .NET, est populaire et n'est toujours pas aussi propre qu'il devrait l'être, mais je suis sûr qu'il y a quelque chose dans la langue que vous choisissez d'utiliser.