2016-04-07 37 views
0

Bu kodun kötü bir uygulama olup olmadığını merak ediyordum. bu dinamik kullanımının kötü bir uygulaması mı?

.. 
var StoresInData = (from s in MainData 
        orderby s.LocationCode 
        select new 
         { 
          s.LocationCode, 
          s.LocationShortName, 
          s.LocationName 
         }).Distinct().ToList(); 
.. 
foreach (var store in StoresInData) 
    { 
     CreateReportForStore(store); 
     .. 
     .. 
    } 

ve CreateReportForStore işlevinde

: bu durumda anonim nesne geçmesine dinamik kötü uygulama kullanımı

private void CreateReportForStore(dynamic store) 
     { 
      var a = store.LocationCode; 
      Console.WriteLine(a); 
      .. 
      .. 
     } 

mi?

Teşekkür

+5

Anonim nesnelerin etrafından geçmek için dinamik kullanmak kötü kod kokusu. Birinin kodunu inceliyor olsaydım, bunun için bir veri sınıfı yapmasını söylerdim. – willaien

+0

Ayrıca, "dinamik", erişilebilirlik değiştiricilerini hala koruduğunu unutmayın. Anonim türler 'iç' (sözleşmesiz) olduklarından, bunları farklı bir derlemede "dinamik" olarak iletmek hatalara neden olur. Sadece kendi tipini yap, zamana değdi. Özellikle de C# derleyici ekibi gelecekte 'özel' yapmaya karar verirse: P – Luaan

cevap

3

etrafında geçmek gerekiyorsa, daktilo sınıfları kullanmak iyi bir fikirdir. Kodu daha okunabilir ve sürdürülebilir kılar. Ayrıca daha az hata eğilimli hale getirir.

+1

Performans çalışma yükünden söz edilmez, çünkü tür çalışma zamanında çözülür. – Rob

0

Genel olarak, dinamikler kullandığım tek şey, bir API'dan nesne özelliklerinin bir alt kümesini döndürmektir. Arka uçta dolaşıyorsa, bunun için bir nesne yaratacağım.