反编译表达式

时间:2017-03-02 10:37:22

标签: lambda expression decompiler

当我尝试使用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之外的另一个类时,它会失败。 (因为它表示parameterExpression为空)。有人可以帮我重写一下这样有效吗?

1 个答案:

答案 0 :(得分:1)

尝试放入第二行(ParameterExpression parameterExpression;

ParameterExpression parameterExpression = expression.Parameters[0];

所有(Expression)演员阵容都没用。你可以删除它们。