Bu konuyu iki kez okudum ve bence insanlar sorulanlarla değil, bildikleriyle yanıt veriyorlar.
JP'nin orijinal sorusu, bir çözümleyici ve daha sonra bir grup sınıf göndererek nesne inşa ettiği gibi görünüyor, ancak bu sınıfların / nesnelerin kendilerinin enjeksiyon için olgunlaşmış hizmetler olduğunu varsayıyoruz. Ya değillerse?
JP, DI'den yararlanmak ve enjeksiyonun bağlamsal verilerle karıştırılmasının ihtişamını arzuluyorsanız, bu kalıpların hiçbiri (veya "anti-kalıplar" olduğu varsayılır) özellikle buna değinmez. Aslında böyle bir çabada sizi destekleyecek bir paket kullanmakla ilgilidir.
Container.GetSevice<MyClass>(someObject1, someObject2)
... bu biçim nadiren desteklenir. Uygulama ile ilişkili sefil performansa eklenen bu tür bir desteği programlamanın zorluğunun, onu açık kaynak geliştiricileri için itici hale getirdiğine inanıyorum.
Ama bu yapılmalı, çünkü MyClass'es için bir fabrika oluşturabilir ve kaydedebilmeliyim ve bu fabrika sadece geçiş uğruna bir "hizmet" olmaya itilmemiş veri / girdi alabilmelidir veri. "Anti-desen" olumsuz sonuçlarla ilgiliyse, veri / model geçirmek için yapay hizmet türlerinin varlığını zorlamak kesinlikle negatiftir (sınıflarınızı bir konteynere sarmalama hissine eşit olarak. Aynı içgüdü geçerlidir).
Yine de, biraz çirkin görünseler bile yardımcı olabilecek bir çerçeve vardır. Örneğin, Ninject:
Yapıcıda ek parametrelerle Ninject kullanarak örnek oluşturma
Bu .NET içindir, popülerdir ve olması gerektiği kadar temiz değildir, ancak eminim hangi dilde kullanmayı seçeceğiniz bir şey var.