2017-03-02 135 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)的轉換都是無用的。你可以刪除它們。