Freigeben über


Visualisieren und Anzeigen von Daten

Typschnellansichten und benutzerdefinierte Viewer stellen Daten auf eine Weise dar, die für einen Entwickler schnell aussagekräftig ist. Der Ausdrucksauswerter (EE) kann Visualisierungen von Drittanbietern unterstützen sowie eigene benutzerdefinierte Viewer bereitstellen.

Visual Studio bestimmt, wie viele Typschnellansichten und benutzerdefinierte Viewer dem Objekttyp zugeordnet sind, indem die GetCustomViewerCount-Methode aufgerufen wird. Wenn mindestens eine Typschnellansicht oder ein benutzerdefinierter Viewer verfügbar ist, ruft Visual Studio die GetCustomViewerList-Methode auf, um eine Liste dieser Visualisierungen und Viewer abzurufen (tatsächlich eine Liste der Elemente, die die Visualisierungen und Viewer implementiert) und sie dem Benutzer präsentiert.

Unterstützen von Typschnellansichten

Es gibt eine Reihe von Schnittstellen, die der EE implementieren muss, um Typschnellansichten zu unterstützen. Diese Schnittstellen können in zwei allgemeine Kategorien unterteilt werden: Schnittstellen, die die Typschnellansichten und Schnittstellen auflisten, die auf die Eigenschaftendaten zugreifen.

Auflistung von Typschnellansichten

Der EE unterstützt die Auflistung der Typschnellansichten in seiner Implementierung IDebugProperty3::GetCustomViewerCount und IDebugProperty3::GetCustomViewerList. Diese Methoden übergeben den Aufruf der entsprechenden Methoden "GetCustomViewerCount " und "GetCustomViewerList".

Der IEEVisualizerService wird durch Aufrufen von CreateVisualizerService abgerufen. Diese Methode erfordert die IDebugBinder3-Schnittstelle , die von der IDebugBinder-Schnittstelle abgerufen wird, die an EvaluateSync übergeben wird. IEEVisualizerServiceProvider::CreateVisualizerService erfordert außerdem die Schnittstellen "IDebugSymbolProvider " und "IDebugAddress ", die an IDebugParsedExpression::EvaluateSync". Die letzte Schnittstelle, die zum Erstellen der IEEVisualizerService Schnittstelle erforderlich ist, ist die IEEVisualizerDataProvider-Schnittstelle , die vom EE implementiert wird. Diese Schnittstelle ermöglicht das Vornehmen von Änderungen an der zu visualisierenden Eigenschaft. Alle Eigenschaftendaten werden in einer IDebugObject-Schnittstelle gekapselt, die auch vom EE implementiert wird.

Zugreifen auf Eigenschaftendaten

Der Zugriff auf Eigenschaftendaten erfolgt über die IPropertyProxyEESide-Schnittstelle . Zum Abrufen dieser Schnittstelle ruft Visual Studio QueryInterface für das Eigenschaftsobjekt auf, um die IPropertyProxyProvider-Schnittstelle abzurufen (implementiert für dasselbe Objekt, das die IDebugProperty3-Schnittstelle implementiert), und ruft dann die GetPropertyProxy-Methode auf, um die IPropertyProxyEESide Schnittstelle abzurufen.

Alle Daten, die an die IPropertyProxyEESide Schnittstelle übergeben werden, werden in der IEEDataStorage-Schnittstelle gekapselt. Diese Schnittstelle stellt ein Bytearray dar und wird sowohl von Visual Studio als auch vom EE implementiert. Wenn die Daten einer Eigenschaft geändert werden sollen, erstellt Visual Studio ein IEEDataStorage Objekt, das die neuen Daten enthält, und ruft CreateReplacementObject mit diesem Datenobjekt auf, um ein neues IEEDataStorage Objekt abzurufen, das wiederum an InPlaceUpdateObject übergeben wird, um die Daten der Eigenschaft zu aktualisieren. IPropertyProxyEESide::CreateReplacementObject ermöglicht dem EE, seine eigene Klasse zu instanziieren, die die IEEDataStorage Schnittstelle implementiert.

Unterstützen von benutzerdefinierten Viewern

Das Flag DBG_ATTRIB_VALUE_CUSTOM_VIEWER wird im dwAttrib Feld der DEBUG_PROPERTY_INFO-Struktur (zurückgegeben durch einen Aufruf von GetPropertyInfo) festgelegt, um anzugeben, dass dem Objekt ein benutzerdefinierter Viewer zugeordnet ist. Wenn dieses Flag festgelegt ist, ruft Visual Studio die IDebugProperty3-Schnittstelle über die IDebugProperty2-Schnittstelle mithilfe von QueryInterface ab.

Wenn der Benutzer einen benutzerdefinierten Viewer auswählt, instanziiert Visual Studio den benutzerdefinierten Viewer mithilfe der von der IDebugProperty3::GetCustomViewerList Methode bereitgestellten CLSID Viewer. Visual Studio ruft dann DisplayValue auf, um den Wert für den Benutzer anzuzeigen.

IDebugCustomViewer::DisplayValue In der Regel wird eine schreibgeschützte Ansicht der Daten angezeigt. Um Änderungen an den Daten zuzulassen, muss der EE eine benutzerdefinierte Schnittstelle implementieren, die das Ändern von Daten in einem Eigenschaftsobjekt unterstützt. Die IDebugCustomViewer::DisplayValue Methode verwendet diese benutzerdefinierte Schnittstelle, um das Ändern der Daten zu unterstützen. Die Methode sucht nach der benutzerdefinierten Schnittstelle auf der Schnittstelle, die IDebugProperty2pDebugProperty als Argument übergeben wird.

Unterstützen von Typschnellansichten und benutzerdefinierten Viewern

Ein EE kann sowohl Typschnellansichten als auch benutzerdefinierte Viewer in den Methoden GetCustomViewerCount und GetCustomViewerList unterstützen. Zunächst fügt der EE die Anzahl der benutzerdefinierten Viewer hinzu, die er an den von der GetCustomViewerCount-Methode zurückgegebenen Wert angibt. Zweitens fügt der EE die CLSIDeigenen benutzerdefinierten Viewer an die Liste an, die von der GetCustomViewerList-Methode zurückgegeben wird.