Interfejsy ewaluatora wyrażeń kluczowych
Ważne
W programie Visual Studio 2015 ten sposób implementowania ewaluatorów wyrażeń jest przestarzały. Aby uzyskać informacje na temat implementowania ewaluatorów wyrażeń CLR, zobacz ewaluatory wyrażeń CLR i przykład ewaluatora wyrażeń zarządzanych.
Podczas pisania ewaluatora wyrażeń (EE) wraz z kontekstem oceny należy zapoznać się z następującymi interfejsami.
Opisy interfejsów
-
Ma jedną metodę GetAddress, która pobiera strukturę danych reprezentującą bieżący punkt wykonywania. Ta struktura danych jest jednym z trzech argumentów, które aparat debugowania przekazuje do metody EvaluateSync w celu obliczenia wyrażenia. Ten interfejs jest zwykle implementowany przez dostawcę symboli.
-
Zawiera metodę Bind , która pobiera obszar pamięci zawierający bieżącą wartość symbolu. Biorąc pod uwagę zarówno metodę zawierającą, reprezentowaną przez obiekt IDebugObject , jak i sam symbol reprezentowany przez obiekt IDebugField ,
IDebugBinder::Bind
zwraca wartość symbolu.IDebugBinder
jest zwykle implementowany przez DE. -
Reprezentuje prosty typ danych. W przypadku bardziej złożonych typów, takich jak tablice i metody, użyj odpowiednio interfejsów IDebugArrayField i IDebugMethodField . IDebugContainerField to inny ważny interfejs pochodny, który reprezentuje symbole zawierające inne symbole, takie jak metody lub klasy. Interfejs
IDebugField
(i jego pochodne) jest zwykle implementowany przez dostawcę symboli.Obiekt
IDebugField
może służyć do znajdowania nazwy i typu symbolu, a wraz z obiektem IDebugBinder można użyć do znalezienia jego wartości. -
Reprezentuje rzeczywiste bity wartości czasu wykonywania symbolu. Powiązanie przyjmuje obiekt IDebugField , który reprezentuje symbol i zwraca obiekt IDebugObject . Metoda GetValue zwraca wartość symbolu w buforze pamięci. De zazwyczaj implementuje ten interfejs, aby reprezentować wartość właściwości w pamięci.
-
Ten interfejs reprezentuje samego ewaluatora wyrażeń. Metoda klucza to Parse, która zwraca interfejs IDebugParsedExpression .
-
Ten interfejs reprezentuje przeanalizowane wyrażenie gotowe do oceny. Metoda klucza to EvaluateSync , która zwraca wartość IDebugProperty2 reprezentującą wartość i typ wyrażenia.
-
Ten interfejs reprezentuje wartość i jego typ i jest wynikiem oceny wyrażenia.