【发布时间】:2016-11-03 15:10:59
【问题描述】:
好的,问题来了:
int a = 111;
int b = 222;
Expression<Func<int>> expr = ()=> someClass.SomeWork(a) + b + 1;
如您所见,有 3 个不同的参数:someClass、a、b。它们都来自另一个执行范围,但不是。我怎样才能得到它们?我的意思是,一般来说,我只想要外部范围的变量。
例如,我想这样使用它:
var result = InvokeAndLog(expr);//this will invoke expression and print out everything I need from these arguments.
【问题讨论】:
-
您必须先编译表达式,然后才能使用
expr.Compile()使用它。现在您可以像使用任何其他委托一样简单地调用返回的Func。 -
我认为问题不是关于如何编译和执行这个表达式。
-
如果你想解析表达式找到引用的变量,看看这个,它可能会给一些提示stackoverflow.com/questions/7220626/…
标签: c#