2012-11-27 40 views
0

我使用的是lambda表达式,需要提取属性名和值从lambda表达式空值:提取属性的名称和

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); 

因为我的属性是可以为空的,所以当它试图编译表达式。另外propertyName被设置为“Value”而不是NumberOfDays。

我该如何去获取这些数据并获得表达式?

+0

好的...几个小时后发现问题!由于该字段可以为空,因此可以忽略.Value - 映射应该读取this.MyProperty(m => m.NumberOfDays); –

+1

然后,您应该将其作为答案发布,然后在可以时接受它。 – svick

回答

相关问题