重要
在 Visual Studio 2015 中,这种实现表达式计算器的方法已弃用。 有关实现 CLR 表达式计算器的信息,请参阅 CLR 表达式计算器 和 托管表达式计算器示例。
编写表达式计算器(EE)以及计算上下文时,应熟悉以下接口。
接口说明
-
具有单个方法 GetAddress,它获取表示当前执行点的数据结构。 此数据结构是调试引擎 (DE) 传递给 EvaluateSync 方法以计算表达式的三个参数之一。 此接口通常由符号提供程序实现。
-
具有 Bind 方法,该方法获取包含符号的当前值的内存区域。 给定包含的方法(由 IDebugObject 对象表示)和符号本身(由 IDebugField 对象表示),
IDebugBinder::Bind返回符号的值。IDebugBinder通常由 DE 实现。 -
表示简单的数据类型。 对于更复杂的类型(如数组和方法),请分别使用派生的 IDebugArrayField 和 IDebugMethodField 接口。 IDebugContainerField 是另一个重要的派生接口,表示包含其他符号(如方法或类)的符号。 接口
IDebugField(及其派生体)通常由符号提供程序实现。IDebugField对象可用于查找符号的名称和类型,以及 IDebugBinder 对象可用于查找其值。 -
表示符号在运行时的实际位数据。 Bind 采用一个 IDebugField 对象,该对象表示符号,并返回 IDebugObject 对象。 GetValue 方法返回内存缓冲区中符号的值。 DE 通常实现此接口来表示内存中属性的值。
-
此接口表示表达式计算器本身。 密钥方法是 Parse,它返回 IDebugParsedExpression 接口。
-
此接口表示准备计算的已分析表达式。 键方法是 EvaluateSync ,它返回一个表示表达式的值和类型的 IDebugProperty2。
-
此接口表示一个值及其类型,并且是表达式计算的结果。