以下代码:
public static void Main()
{
ParameterExpression paramExpr = Expression.Parameter(typeof(int), "arg");
LambdaExpression lambdaExpr = Expression.Lambda(
Expression.Add(
paramExpr,
Expression.Constant(1)
),
new List<ParameterExpression>() { paramExpr }
);
Console.WriteLine(lambdaExpr);
var method = lambdaExpr.Compile().Method;
var expressions = new Expression[]
{
Expression.Constant(5)
};
Expression.Call(method, expressions);
}
错误
运行时异常(第27行):提供的参数数量不正确 用于调用方法&#39; Int32 lambda_method(System.Runtime.CompilerServices.Closure,Int32)&#39;
System.Runtime.CompilerServices.Closure来自哪里?
如何使用Expression.Call调用此方法?
我知道还有其他方法可以实现相同的目标,例如调用lambdaExpr.Compile().DynamicInvoke()
,但由于受到约束,我需要以上述方式执行此操作。