2017-03-02 14 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の外に、別のクラスにこれをコピーしたいとき、それは失敗します。 (これは、parameterExpressionが空であると言うためです)。誰かが私にこれを書き直してもらうことができますか?

答えて

1

は、第二のライン(ParameterExpression parameterExpression;付き1)

ParameterExpression parameterExpression = expression.Parameters[0]; 

に入れてみてくださいそして、すべての(Expression)キャストは無用です。削除することができます。

関連する問題