Bu sorunu şu şekilde çözüyorum: bağımlılık fabrikaları enjekte etmek. Bu fabrikalarda, bağımlılığı önce kapsayıcıda kayıtlı olduğu gibi çözer, sonra kalan tüm verileri "serileştirir": json.net varolan nesnede alanları doldurmaya izin verir.
Fabrikalar kodu IoC konteynerinin kablolama kodu ile birlikte giderken, container.Resolve
fabrika içinde kullanmanın container
, kodda sadece bir yerde kullanılması gereken kuralı ihlal ettiğini düşünmüyorum : tüm kablolama nerede.
Şu an itibariyle, yansımayı kullanarak bu süreci otomatik olarak (bu yaklaşımı test ettiğim şeyin aksine) yapmaya çalışıyorum. Evet, json.net deserialization kendisi ne fazla bir şey yok, bir kısmı özel kod ile değiştirilir, ama bence, neden rahatsız.
Ayrıca, konuyla ilgili son düşünceleriniz / kararınız neydi? Bu yazıyı okuduktan sonra iki yol görüyorum: seriyi kaldırın, sonra enjekte edin; veya enjekte edin, ardından serisini kaldırın (doldurun). Ve hala yolumu daha iyi buluyorum. Buna karşı olan argümanları duymaktan memnuniyet duyacağım (yolumun durumum için daha iyi olabileceğine dair, ancak başarısız olduğu iyi alternatif vakaları canlı olarak hayal edemiyorum, sadece bazı küçük tahminler)
This would eliminate the possibility of using Constructor injected DI
-- Neden? Serileştirme amacıyla varsayılan bir kurucu eklediğiniz sürece parametreli eğitmenleriniz olabilir (isterseniz varsayılan kurucu özel olabilir).