我试图Expression在运行时动态选择方法。例如,我想实现类似于我在下面尝试的东西:
ConstantExpression one = Expression.Constant(1);
ConstantExpression two = Expression.Constant(2);
// Here the 'GreaterThan' is the method name received at runtime:
var method = typeof(Expression).GetMethods().Single(mi => mi.Name == "GreaterThan" && mi.GetParameters().Length == 2);
var expr = Expression.Call(method, one, two);
在最后一行,我收到错误:
System.ArgumentException: 'Expression of type 'System.Int32' cannot be used for parameter of type 'System.Linq.Expressions.Expression' of method 'System.Linq.Expressions.BinaryExpression GreaterThan(System.Linq.Expressions.Expression, System.Linq.Expressions.Expression)''
我想要做的是通过Expression在运行时动态选择方法来构建 lambda 函数。在这里,方法名称将指一些根据表达式方法与数字(或字符串)进行比较的方法。
眼眸繁星
一只甜甜圈
相关分类