2011-01-28 27 views
1

我使用Expression<Func<TEntity, object>>映射屬性。從表達式映射中分配一個值

我只需要從對象中獲取屬性值直到知道。如何使用該表達式分配值?

+2

不能與表達直接做到這一點,你需要創建一個`行動<..>'(或'表達式>以樹形式)來做到這一點。請參閱:創建動作以「設置」屬性,當我爲「get」提供LINQ表達式時。 http://stackoverflow.com/q/4596453/412770 – Ani 2011-01-28 13:07:25

回答

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