【问题标题】:Assign a value from an expression mapping从表达式映射中赋值
【发布时间】:2011-01-28 13:03:47
【问题描述】:

我使用Expression<Func<TEntity, object>> 映射属性。

我只需要从对象中获取属性值,直到知道为止。如何使用该表达式分配值?

【问题讨论】:

  • 你不能直接用那个表达式来做,你需要创建一个Action<..>(或一个树形的Expression<Action<..>>)来做到这一点。请参阅:创建一个 Action 来“设置”一个属性,当我获得“get”的 LINQ 表达式时。 stackoverflow.com/q/4596453/412770

标签: c# .net-4.0 expression-trees


【解决方案1】:

试试这个,假设expression = Expression<Func<TEntity, object>>:

MemberExpression memberExpression;

switch (expression.Body.NodeType)
{
  case ExpressionType.Convert:
    memberExpression = ((UnaryExpression) expression.Body).Operand as MemberExpression;
    break;
  case ExpressionType.MemberAccess:
    memberExpression = expression.Body as MemberExpression;
    break;
}

var propInfo = memberExpression.Member as PropertyInfo;

然后只需使用 SetValue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    相关资源
    最近更新 更多