Expression
유형의 형태로 Expression<Func<...,...,...,TResult>>
(임의이지만 고정 된 수의 매개 변수) 인스턴스를받습니다. 예컨대주어진 fram 결과 식을 계산하는 가장 빠른 방법
:
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
변수 I 컴파일 된 식을 적용한 결과를 산출 할 필요가있는 개체 값의 배열되는 I가 액세스 할 수있는 유일한 방법.
receivedExpression
은 변경되지 않습니다. 한 번 가져 오면 변경되지 않습니다.
내 상황에 따라 result
변수를 계산하는 가장 빠른 방법은 무엇입니까? 이 경우에는 DynamicInvoke
이 매우 느리기 때문에 결과를 계산하는 더 빠른 방법이 있는지 궁금합니다.
var rec = receivedExpression.Compile();
var f = (object[] p) => (object)rec.Invoke((type0)p[0],(type1)p[1],...);
, 당신은 (알 수없는)을 변환하는 데 우선해야합니다
있는 방법'컴파일이 없기 때문에 귀하의 코드는 컴파일되지 않습니다 '표현식 ' – NetMage
아마도'LambdaExpression receivedExpression'이어야할까요? – Phaeze
관련된 유형, 특히 반환 유형을 알고 있습니까? – NetMage