2016-12-22 12 views
5

、私は以下のクラスを持ってnullの場合: -チェックは、クラスの任意のプロパティには、

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

私はJSONをincommingでそれをマッピングしています: - 私はクラスの任意のプロパティを持っているかどうかを確認したかった

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

上記のマッピングの後に値を持たないか、nullを残しました。このため

私が試した: -

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

しかし、デバッグ中に、私はどうかプロパティは、それが真の値を与えるたびに、ヌルまたは左ではないことがわかりました。

ループをAvoioding For/foreachループで達成する方法を教えてください。

答えて

12

プロパティ自体がであるかどうかをチェックしています(これは決して真ではありません)。プロパティの値ではありません。代わりにこれを使用します。

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

これは働いていたためにトリックを行う可能性があります...私だけが作っ変更... - > p.GetValue(objRequirement、ヌル)... GetValueメソッドでした1つのパラメータを取っていない.2番目のパラメータを要求していた –

2

これはあなた

objRequirement.GetType().GetProperties() 
.Where(pi => pi.GetValue(objRequirement) is string) 
.Select(pi => (string) pi.GetValue(objRequirement)) 
.Any(value => String.IsNullOrEmpty(value)); 
関連する問題