c# – 执行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"

这应该适用于不同类型.

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

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

Styxxy提出了一个很好的一点…你会更好地让编译器帮助你.注意一个编译的表达式如下面的代码输入和结果都是强类型的.

var input = 4;
var compiledExpression = exTyped.Compile();
var result = compiledExpression(input);
http://stackoverflow.com/questions/17981673/execute-lambdaexpression-and-get-returned-value-as-object

转载注明原文:c# – 执行LambdaExpression并获取返回的值作为对象