在表达式树之间共享变量

本文关键字:共享变量 之间 表达式 | 更新日期: 2023-09-27 18:30:23

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

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

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

在表达式树之间共享变量

您应该创建自己的类(使用 TypeBuilder ),其中包含所需每个成员的字段。