2016-12-22 5 views
5

У меня есть следующий класс: -Проверьте любое свойство класса является нулевым

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

Я отображение его Incomming JSon: -

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

Я хотел проверить, если любое свойство класса имеет no value или left null после отображения выше.

Для этого я попробовал: -

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

Но во время отладки я обнаружил, что ли оставил свойство Null или не каждый раз, когда она дает истинное значение.

Пожалуйста, помогите мне, как я могу достичь этого путем Avoioding For/foreach.

ответ

12

Вы проверяете, являются ли сами свойства равными нулю (это никогда не будет истинным), а не значениями свойств. Используйте вместо этого:

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

Это работало .. только изменить я сделал .. -> p.GetValue (objRequirement, нуль) ... Метод ПолучитьЗначение был не взяв один параметр ... он требовал второго –

2

Это может сделать трюк для вас

objRequirement.GetType().GetProperties() 
.Where(pi => pi.GetValue(objRequirement) is string) 
.Select(pi => (string) pi.GetValue(objRequirement)) 
.Any(value => String.IsNullOrEmpty(value)); 
Смежные вопросы