2012-11-27 2 views
0

람다 식의 널 (NULL) 값 :추출 속성 이름과 내가 람다 표현식을 사용하여 속성 이름과 값을 추출 할 필요가있어

public MyMapping(Expression<Func<TEntity, int?>> expression) 
    { 
     this.expression = expression; 

     if (this.expression != null) 
     { 
      if (expression.Body is MemberExpression) 
      { 
       this.expressionMemberName = ((MemberExpression)expression.Body).Member.Name; 
      } 
      else 
      { 
       var op = ((UnaryExpression)expression.Body).Operand; 
       this.expressionMemberName = ((MemberExpression)op).Member.Name; 
      }   
     } 
    } 

다음과 같이 표현은 설정입니다 :

this.MyProperty(m => m.NumberOfDays.Value); 

다음을 원합니다 :

var propertyName = this.expressionMemberName; 

var value = this.expression.Compile()(instance); 

내 속성이 null 가능하므로 예외가 발생합니다. 표현식을 컴파일하십시오. 또한 propertyName은 NumberOfDays 대신 "Value"로 설정됩니다.

이 데이터를 가져 와서 표현식을 컴파일하도록하려면 어떻게해야합니까?

+0

ok ... 몇 시간 후에 문제가 발견되었습니다. 필드가 nullable이므로 .Value를 생략 할 수 있습니다. 매핑이 읽어야합니다. this.MyProperty (m => m.NumberOfDays); –

+1

그런 다음 대답으로 게시 한 다음 수락해야합니다. – svick

답변

관련 문제