在表达式树之间共享变量

时间:2014-11-13 22:11:42

标签: c# variables expression-trees callstack

我想知道是否有一种灵活有效的方法在多个编译的表达式树之间共享变量?

我正在写一个表达式解析器。目前,我能够执行单行语句。使用Expression.Block,可以构建具有多个变量的任意大型表达式树。但是,它们变得非常难以调试,因为您无法控制已编译的lambda内部发生的事情(例如,无法设置断点或监视)。因此,我想将这个单个表达式树分成多个表达式,所有表达式都在相同的变量上运行(作为lambda的参数传入)。

我能想到的最简单的解决方案是使用一个对象数组作为参数传递给lambda。但是,在这种情况下,我每次访问它时都必须转换/ box / unbox值。有没有办法模拟一个"调用堆栈"变量直接在内存中作为其本机表示对齐?

1 个答案:

答案 0 :(得分:2)

您应该为每个成员创建一个自己的类(使用TypeBuilder)。