2016-12-22 67 views
5

我有以下类: -检查类的所有属性为null

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

我跟进来的Json的映射它: -

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

我想检查是否类的任何财产没有值或在上面的映射后留空。

为此,我尝试: -

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

但在调试我发现,无论是左侧空财产或不每次它赋予值true。

请帮助我,我如何通过Avoioding For/foreach循环实现这一目标。

回答

12

您正在检查属性本身是否为空(永远不会为真),而不是属性的值。使用这个来代替:

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

这个工作做的伎俩。只有改变我做.. - > p.GetValue(objRequirement,NULL)... GetValue方法是没有采取一个参数..它要求第二 –

2

这可能会为你

objRequirement.GetType().GetProperties() 
.Where(pi => pi.GetValue(objRequirement) is string) 
.Select(pi => (string) pi.GetValue(objRequirement)) 
.Any(value => String.IsNullOrEmpty(value)); 
相关问题