有干净的方法吗?
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"
这适用于不同类型。
答案 0 :(得分:33)
当然......你只需要编译你的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);