【发布时间】:2018-12-29 14:26:35
【问题描述】:
我有一个包含 Func 委托的表达式。我正在尝试调用它并获取整数值作为结果
class Program
{
static Expression TestMethod(Expression<Func<int, int>> expression)
{
return expression;
}
static void Main(string[] args)
{
var expr = TestMethod(i => i + 1);
var result = Expression.Lambda<Func<int, int>> (expr).Compile().Invoke(1);
Console.WriteLine(result);
}
}
当我调用表达式时,我得到下一个错误:
未处理的异常:System.ArgumentException:为 lambda 声明提供的参数数量不正确 在 System.Linq.Expressions.Expression.ValidateLambdaArgs(类型 delegateType,Expression& 正文,ReadOnlyCollection
1 parameters, String paramName) at System.Linq.Expressions.Expression.Lambda[TDelegate](Expression body, String name, Boolean tailCall, IEnumerable1 参数) 在 System.Linq.Expressions.Expression.Lambda[TDelegate](表达式主体,布尔 tailCall,IEnumerable`1 参数) 在 System.Linq.Expressions.Expression.Lambda[TDelegate](表达式主体,ParameterExpression[] 参数) 在 E:\programming\portfolio\TestConsoleApp\TestConsoleApp\Program.cs:line 22 中的 TestConsoleApp.Program.Main(String[] args) 处
如何获得 Func 委托调用的结果?
【问题讨论】:
标签: c# delegates expression