2011-01-28 3 views
1

I Свойства карты, используя Expression<Func<TEntity, object>>.Присвоить значение из преобразования выражений

Мне просто нужно было получить значения свойств из объектов, пока они не узнают. Как назначить значения с помощью этого выражения?

+2

Вы не можете это сделать с этим выражением напрямую, вам нужно создать '' Action <..> (или ' Выражение > 'в древовидной форме). См.: Создание действия «установить» свойство, когда мне предоставляется выражение LINQ для «get». http://stackoverflow.com/q/4596453/412770 – Ani

ответ

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

Смежные вопросы