【发布时间】:2015-08-13 00:01:46
【问题描述】:
我已经构建了一个Func<object,bool> 类型的表达式树。但是当我尝试编译它时,我得到了异常:
“MyClass”类型的ParameterExpression不能用于“System.Object”类型的委托参数
调用对象的类型在运行时之前是未知的。
Expression leftFunc, rightFunc;
var x = Expression.Parameter(t);
if (left_element.All(char.IsDigit))
leftFunc = Expression.Constant(int.Parse(left_element));
else
leftFunc = Expression.PropertyOrField(x, left_element);
if (right_element.All(char.IsDigit))
rightFunc = Expression.Constant(int.Parse(right_element));
else
rightFunc = Expression.PropertyOrField(x, right_element);
var result = Expression.Lambda<Func<object, bool>>(
Expression.GreaterThan(leftFunc, rightFunc), x); //exception thrown on this line
return result;
x 是MyClass 类型,我可以以某种方式使用转换器吗?
【问题讨论】:
标签: c# linq lambda expression-trees