2015-01-28 3 views
-1

클래스의 모든 속성이 null인지 확인해야하는 다음 코드가 있습니다. 아래 코드를 시도했지만 작동하지 않았습니다. 왜? enter image description here클래스의 모든 속성이 null인지 확인하십시오.

+1

'myUser! = null'이지만, 'myUser.CellPhone == null'. – Sinatr

+1

클래스의 속성이 아니라 null에 대한 클래스 변수를 확인하고 있습니다. –

+0

왜 이것이 작동한다고 생각 했습니까? –

답변

5

당신이 내부적으로 수행하는 특성 IsInitialized을 만들 수 :

public bool IsInitialized 
{ 
    get 
    { 
     return this.CellPhone == null && this.Email == null && ...; 
    } 
} 

그럼 그냥 재산 IsInitialized 확인 :

if (myUser == null || myUser.IsInitialized) 
{ ... } 

또 다른 옵션을 통해 걷는 반사의 사용은과 모든 재산을 검사하십시오, 그러나 저에게 과잉 보인다. 또한 원래 디자인에서 벗어날 수 있습니다 (예 : 모든 속성을 선택하는 경우 하나는 null이되어야 함).

+2

반사를 사용하면 속성이 아닌 사소한 것을 나타내는 방법을 사용합니다. 그러나 수동 접근법은 어쨌든 훨씬 더 좋습니다. 그러나, 나는'IsInitialized'처럼 더 의미 있고보다 유연한 다른 이름을 사용할 것입니다. –

+0

@TimSchmelter : 너와 팀에 동의 해. 업데이트 됨. –

0
//NameSpace  
    using System.Reflection; 

    //Definition 
    bool IsAnyNullOrEmpty(object myObject) 
    { 
     foreach(PropertyInfo pi in myObject.GetType().GetProperties()) 
     { 
      if(pi.PropertyType == typeof(string)) 
      { 
       string value = (string)pi.GetValue(myObject); 
       if(string.IsNullOrEmpty(value)) 
       { 
        return true; 
       } 
      } 
     } 
     return false; 
    } 

    //Call 
    bool flag = IsAnyNullOrEmpty(objCampaign.Account); 
관련 문제