2016-12-22 19 views
5

Ben şu sınıf var null ise: -Kontrol sınıfının herhangi mülkiyet

public class Requirements 
    { 
     public string EventMessageUId { get; set; } 
     public string ProjectId { get; set; }   
     public List<Message> Message { get; set; }   
    } 

Ben Json incomming ile haritalama ediyorum: - Ben sınıfın herhangi özellik olup olmadığını kontrol etmek istedim

Requirements objRequirement = JsonObject.ToObject<Requirements>(); 

haritalamadan sonra hiçbir değer veya sol null. Bunun için

Denedim: -

bool isNull= objRequirement.GetType().GetProperties().All(p => p != null); 

Ama ayıklarken ederken özellik her seferinde boş bıraktı olsun ya da olmasın bu değer true verdiğini gördük.

Lütfen bana bunu Avoioding For/foreach döngüsüyle nasıl başarabilirim?

cevap

12

Sen atmaktaysanız özellikleri kendileri (doğru olmayacak olan) boş olan değil, özelliklerin değerleri. Bunu kullan:

bool isNull = objRequirement.GetType().GetProperties() 
          .All(p => p.GetValue(objRequirement) != null); 
+0

için hile yapabilir .. Sadece yaptığım değiştirmek .. -> ... GetValue yöntemi p.GetValue (null objRequirement) idi bir parametre almıyor ... ikinci için talep ediyordu –

2

Bu

objRequirement.GetType().GetProperties() 
.Where(pi => pi.GetValue(objRequirement) is string) 
.Select(pi => (string) pi.GetValue(objRequirement)) 
.Any(value => String.IsNullOrEmpty(value)); 
Bu çalıştı