Implementierungsstrategie für Ausdrucksauswertung

Wichtig

Seit Visual Studio 2015 ist diese Art der Implementierung von Ausdrucksauswertungen veraltet. Informationen zum Implementieren von CLR-Ausdrucksauswertungen finden Sie unter CLR-Ausdrucksauswertungen und Beispiel für die Auswertung verwalteter Ausdrücke.

Ein Ansatz zum schnellen Erstellen eines Ausdrucksvaluators (EE) besteht darin, zuerst den minimalen Code zu implementieren, der zum Anzeigen lokaler Variablen im Lokalen Fenster erforderlich ist. Es ist nützlich zu erkennen, dass jede Zeile im Fenster "Lokal" den Namen, typ und Wert einer lokalen Variablen anzeigt und dass alle drei durch ein IDebugProperty2-Objekt dargestellt werden. Der Name, Typ und Wert einer lokalen Variablen wird von einem IDebugProperty2 Objekt abgerufen, indem die GetPropertyInfo-Methode aufgerufen wird. Weitere Informationen zum Anzeigen lokaler Variablen im Fenster "Lokal" finden Sie unter "Anzeigen von Lokalen".

Diskussion (Discussion)

Eine mögliche Implementierungssequenz beginnt mit der Implementierung von IDebugExpressionEvaluator. Die Methoden Parse und GetMethodProperty müssen implementiert werden, um Lokale anzuzeigen. Durch Aufrufen IDebugExpressionEvaluator::GetMethodProperty wird ein IDebugProperty2 Objekt zurückgegeben, das eine Methode darstellt: d. h. ein IDebugMethodField -Objekt. Methoden selbst werden im Fenster "Lokal" nicht angezeigt.

Die EnumChildren-Methode sollte als Nächstes implementiert werden. Das Debugmodul (DE) ruft diese Methode auf, um eine Liste der lokalen Variablen und Argumente abzurufen, indem ein guidFilter Argument von guidFilterLocalsPlusArgsübergeben IDebugProperty2::EnumChildren wird. IDebugProperty2::EnumChildren ruft EnumArguments und EnumLocals auf, wobei die Ergebnisse in einer einzelnen Enumeration kombiniert werden. Weitere Details finden Sie unter "Lokal anzeigen".