【发布时间】:2017-11-28 23:06:37
【问题描述】:
我收到一个Expression<Func<...,...,...,TResult>>(随机,但参数数量固定)实例,其形式为一般Expression 类型。
例如:
Expression<Func<int,int,int>> adderExpression = (a,b) => a+b;
LambdaExpression receivedExpression = adderExpression;
//Later on, I get only the receivedExpression variable and an array of values for which I have to compute:
var values = new object[] {3, 4};
var result = receivedExpression.Compile().DynamicInvoke(values);
我唯一可以访问的是receivedExpression 变量和一个对象值数组,我必须为其计算应用编译表达式的结果。
receivedExpression 不会改变:一旦我得到它,它就会保持不变。
根据我的情况,计算result 变量的最快方法是什么? DynamicInvoke 在这种情况下非常慢,我想知道是否有更快的方法来计算结果。
【问题讨论】:
-
您的代码无法编译,因为
Expression上没有方法Compile。 -
应该是
LambdaExpression receivedExpression? -
你知道所涉及的任何类型,尤其是返回类型吗?
标签: c# dynamic reflection lambda expression