2017-03-02 91 views
0

当我试着使用dotPeek反编译代码,我得到这个:反编译表达

public static Expression<Func<TInput, object>> ToUntypedPropertyExpression<TInput, TOutput>(this Expression<Func<TInput, TOutput>> expression) 
{ 
    string name = (expression.Body as MemberExpression ?? ((UnaryExpression) expression.Body).Operand as MemberExpression).Member.Name; 
    ParameterExpression parameterExpression; 
    return Expression.Lambda<Func<TInput, object>>((Expression) Expression.Convert((Expression) Expression.Property((Expression) parameterExpression, name), typeof (object)), new ParameterExpression[1] 
    { 
    parameterExpression 
    }); 
} 

但是,当我想这个复制到另一个班级,该dll外,它失败。 (因为它说参数表达式是空的)。有人可以帮我重写这个,所以它可以工作吗?

回答

1

尝试将在第二行(具有ParameterExpression parameterExpression;

ParameterExpression parameterExpression = expression.Parameters[0]; 

而且所有的(Expression)的转换都是无用的。你可以删除它们。