2016-12-22 3 views
5

ich folgende Klasse haben: -Überprüfen Sie, ob eine Eigenschaft der Klasse ist null

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

ich es bin Kartierung mit incomming Json: -

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

ich, wenn eine Eigenschaft der Klasse überprüfen wollte, hat Kein Wert oder nach dem obigen Mapping null.

Dafür habe ich versucht: -

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

Aber beim Debuggen Ich fand, dass, ob Eigenschaft Null nach links oder nicht jedes Mal, wenn Wert true gibt.

Bitte helfen Sie mir, wie kann ich dies erreichen durch Avoioding For/foreach Schleife.

Antwort

12

Sie überprüfen, ob die Eigenschaften selbst null sind (was niemals wahr sein wird), nicht die Werte der Eigenschaften. Verwenden Sie stattdessen:

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

Das funktionierte .. Nur ändern gemacht I .. -> p.GetValue (objRequirement, null) ... GetValue Methode war nicht einen Parameter zu nehmen .. es war anspruchsvoll für den zweiten –

2

Dies könnte den Trick für Sie tun

objRequirement.GetType().GetProperties() 
.Where(pi => pi.GetValue(objRequirement) is string) 
.Select(pi => (string) pi.GetValue(objRequirement)) 
.Any(value => String.IsNullOrEmpty(value)); 
Verwandte Themen