Подтвердить что ты не робот

Выполнить LambdaExpression и получить возвращаемое значение как объект

Есть ли чистый способ сделать это?

Expression<Func<int, string>> exTyped = i => "My int = " + i;
LambdaExpression lambda = exTyped;

//later on:

object input = 4;
object result = ExecuteLambdaSomeHow(lambda, input);
//result should be "My int = 4"

Это должно работать для разных типов.

4b9b3361

Ответ 1

Конечно... вам просто нужно скомпилировать вашу лямбду, а затем вызвать ее...

object input = 4;
var compiledLambda = lambda.Compile();
var result = compiledLambda.DynamicInvoke(input);

Styxxy поднимает превосходный момент... Вам лучше будет помогать, позволяя компилятору помочь вам. Обратите внимание на скомпилированное выражение, как в приведенном ниже коде, и результат строго типизирован.

var input = 4;
var compiledExpression = exTyped.Compile();
var result = compiledExpression(input);