Ho letto tutto questo thread, due volte, e penso che le persone rispondano a ciò che sanno, non a ciò che viene chiesto.
La domanda originale di JP sembra che stia costruendo oggetti inviando un resolver, e poi un gruppo di classi, ma stiamo assumendo che quelle classi / oggetti siano essi stessi servizi, pronti per l'iniezione. E se non lo fossero?
JP, se stai cercando di sfruttare DI e desideri la gloria di mescolare l'iniezione con dati contestuali, nessuno di questi schemi (o presunti "anti-schemi") si rivolge specificamente a quello. In realtà si riduce all'utilizzo di un pacchetto che ti supporterà in tale sforzo.
Container.GetSevice<MyClass>(someObject1, someObject2)
... questo formato è raramente supportato. Credo che la difficoltà di programmare tale supporto, aggiunta alla miserabile performance che sarebbe associata all'implementazione, lo rende poco attraente per gli sviluppatori open source.
Ma dovrebbe essere fatto, perché dovrei essere in grado di creare e registrare una factory per MyClass'es, e quella factory dovrebbe essere in grado di ricevere dati / input che non sono spinti ad essere un "servizio" solo per il gusto di passare dati. Se "l'anti-pattern" riguarda conseguenze negative, forzare l'esistenza di tipi di servizi artificiali per il passaggio di dati / modelli è certamente negativo (alla pari con la sensazione di avvolgere le classi in un contenitore. Lo stesso istinto si applica).
Ci sono framework che possono aiutare, anche se sembrano un po 'brutti. Ad esempio, Ninject:
Creazione di un'istanza utilizzando Ninject con parametri aggiuntivi nel costruttore
Questo è per .NET, è popolare e non è ancora così pulito come dovrebbe essere, ma sono sicuro che ci sia qualcosa in qualunque lingua tu scelga di utilizzare.