Saya membaca seluruh utas ini, dua kali, dan saya pikir orang merespons dengan apa yang mereka ketahui, bukan dengan apa yang diminta.
Pertanyaan asli JP terlihat seperti dia membangun objek dengan mengirimkan resolver, dan kemudian banyak kelas, tapi kami mengasumsikan bahwa kelas / objek itu sendiri adalah layanan, siap untuk injeksi. Bagaimana jika tidak?
JP, jika Anda ingin memanfaatkan DI dan menginginkan kemuliaan pencampuran injeksi dengan data kontekstual, tidak satu pun dari pola-pola ini (atau yang diduga "anti-pola") yang secara khusus mengatasinya. Itu sebenarnya bermuara pada menggunakan paket yang akan mendukung Anda dalam upaya seperti itu.
Container.GetSevice<MyClass>(someObject1, someObject2)
... format ini jarang didukung. Saya percaya kesulitan pemrograman dukungan seperti itu, ditambahkan ke kinerja menyedihkan yang akan dikaitkan dengan implementasi, membuatnya tidak menarik bagi pengembang opensource.
Tapi itu harus dilakukan, karena saya harus dapat membuat dan mendaftarkan pabrik untuk MyClass'es, dan pabrik itu harus dapat menerima data / input yang tidak didorong menjadi "layanan" hanya demi melewati data. Jika "anti-pola" adalah tentang konsekuensi negatif, maka memaksakan keberadaan jenis layanan buatan untuk meneruskan data / model tentu negatif (setara dengan perasaan Anda tentang membungkus kelas Anda ke dalam wadah. Naluri yang sama berlaku).
Ada beberapa kerangka kerja yang mungkin membantu, meskipun mereka terlihat agak jelek. Misalnya, Ninject:
Membuat instance menggunakan Ninject dengan parameter tambahan di konstruktor
Itu untuk .NET, populer, dan masih tidak bersih seperti seharusnya, tapi saya yakin ada sesuatu dalam bahasa apa pun yang Anda pilih untuk digunakan.