执行LambdaExpression并获取作为对象的返回值

本文关键字:对象 返回值 LambdaExpression 获取 执行 | 更新日期: 2023-09-27 18:25:40

有干净的方法吗?

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"

这应该适用于不同的类型。

执行LambdaExpression并获取作为对象的返回值

当然。。。你只需要编译你的lambda,然后调用它…

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

施蒂克西提出了一个很好的观点。。。让编译器帮你会更好。请注意,使用下面代码中的编译表达式,输入和结果都是强类型的。

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