【发布时间】:2012-11-27 10:11:31
【问题描述】:
我正在使用 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。
我将如何获取这些数据并让表达式进行编译?
【问题讨论】:
-
好的...几个小时后发现问题!由于该字段可以为空,我可以省略 .Value - 映射应为 - this.MyProperty(m => m.NumberOfDays);
-
那么您应该将其发布为答案,然后尽可能接受。
标签: c# lambda expression-trees nullable