2016-12-22 15 views
5

Tôi có lớp sau đây: -Kiểm tra nếu có tài sản của lớp là null

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

Tôi đang lập bản đồ nó với incomming Json: -

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

tôi muốn kiểm tra xem bất cứ tài sản của lớp có không có giá trị hoặc không còn null sau khi lập bản đồ ở trên.

Đối với điều này tôi đã cố gắng: -

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

Nhưng trong khi gỡ lỗi tôi thấy rằng dù tài sản trái Null hay không mỗi lần nó mang lại giá trị true.

Vui lòng giúp tôi làm cách nào để có thể đạt được điều này theo vòng lặp Avoioding For/foreach.

Trả lời

12

Bạn đang kiểm tra xem các thuộc tính tự là không (sẽ không bao giờ đúng), không phải giá trị của thuộc tính. Sử dụng điều này thay vì:

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

này đã làm việc .. Chỉ thay đổi tôi đã thực hiện .. -> p.GetValue (objRequirement, null) ... phương pháp GetValue là không lấy một tham số..đó là yêu cầu thứ hai –

2

Điều này có thể làm các trick cho bạn

objRequirement.GetType().GetProperties() 
.Where(pi => pi.GetValue(objRequirement) is string) 
.Select(pi => (string) pi.GetValue(objRequirement)) 
.Any(value => String.IsNullOrEmpty(value)); 
Các vấn đề liên quan