2010-11-27 24 views
7

C# 'da yeniyim, bir nesnenin özellikleri üzerinde yineleme yapmak için bir işlev yazmak ve tüm null dizeleri "" olarak ayarlamak istiyorum. "Yansıma" denilen bir şeyin kullanılmasının mümkün olduğunu duydum ama nasıl olduğunu bilmiyorum.C# içindeki bir nesnenin tüm özelliklerinde yineleme nasıl yapılır?

Teşekkür

+2

bakınız. Bununla ne elde etmeye çalıştığınızı merak ediyorum. – andynormancx

+0

Bir yan notda, boş dizelerinizi "" yerine "String.Empty" olarak ayarlamayı düşünebilirsiniz. Gerçek dünyadaki etki göz ardı edilebilir, ancak etkili kod için eski, yeni bir nesne yaratmıyor. – Cranialsurge

+0

Ayrıca, andynormancx ile aynı fikirdeyim .... hedefiniz nedir? – Cranialsurge

cevap

19
public class Foo 
{ 
    public string Prop1 { get; set; } 
    public string Prop2 { get; set; } 
    public int Prop3 { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var foo = new Foo(); 

     // Use reflection to get all string properties 
     // that have getters and setters 
     var properties = from p in typeof(Foo).GetProperties() 
         where p.PropertyType == typeof(string) && 
           p.CanRead && 
           p.CanWrite 
         select p; 

     foreach (var property in properties) 
     { 
      var value = (string)property.GetValue(foo, null); 
      if (value == null) 
      { 
       property.SetValue(foo, string.Empty, null); 
      } 
     } 

     // at this stage foo should no longer have null string properties 
    } 
} 
+2

+1 kontrol/okuma kontrolü için – Aliostad

+3

Evet, okuma/yazmadan önce okuma/yazma için kontrol önemlidir. –

+0

Cevabınız için teşekkür ederiz. – Ristovak

1
foreach(PropertyInfo pi in myobject.GetType().GetProperties(BindingFlags.Public)) 
{ 
    if (pi.GetValue(myobject)==null) 
    { 
     // do something 
    } 
} 
İlgili konular