Principais interfaces do avaliador de expressão
Importante
No Visual Studio 2015, essa maneira de implementar avaliadores de expressão foi preterida. Para obter informações sobre como implementar avaliadores de expressão CLR, confira Avaliadores de expressão CLR e Exemplo de avaliador de expressão gerenciado.
Ao escrever um EE (avaliador de expressão), com o contexto de avaliação, você deve estar familiarizado com as interfaces a seguir.
Descrições da interface
-
Tem um único método, GetAddress, que obtém uma estrutura de dados que representa o ponto de execução atual. Essa estrutura de dados é um dos três argumentos que o DE (mecanismo de depuração) passa para o método EvaluateSync para avaliar uma expressão. Essa interface normalmente é implementada pelo provedor de símbolos.
-
Tem o método Bind, que obtém a área de memória que contém o valor atual de um símbolo. Dado o método que contém, representado por um objeto IDebugObject, e o próprio símbolo, representado por um objeto IDebugField,
IDebugBinder::Bind
retorna o valor do símbolo.IDebugBinder
geralmente é implementado pelo DE. -
Representa um tipo de dados simples. Para tipos mais complexos, como matrizes e métodos, use as interfaces IDebugArrayField e IDebugMethodField derivadas, respectivamente. IDebugContainerField é outra interface derivada importante que representa símbolos que contêm outros símbolos, como métodos ou classes. A interface
IDebugField
(e seus derivados) normalmente é implementada pelo provedor de símbolos.Um objeto
IDebugField
pode ser usado para localizar o nome e o tipo de um símbolo e, com um objeto IDebugBinder, pode ser usado para localizar seu valor. -
Representa os bits reais do valor de runtime de um símbolo. Bind usa um objeto IDebugField, que representa um símbolo, e retorna um objeto IDebugObject. O método GetValue retorna o valor do símbolo em um buffer de memória. Um DE normalmente implementa essa interface para representar o valor de uma propriedade na memória.
-
Essa interface representa o próprio avaliador de expressão. O método chave é Parse, que retorna uma interface IDebugParsedExpression.
-
Essa interface representa uma expressão analisada pronta para ser avaliada. O método chave é EvaluateSync, que retorna um IDebugProperty2 que representa o valor e o tipo da expressão.
-
Essa interface representa um valor e seu tipo e é o resultado de uma avaliação de expressão.