Sdílet prostřednictvím


Vizualizace a zobrazení dat

Vizualizéry typů a vlastní čtenáři prezentují data způsobem, který je pro vývojáře rychle smysluplný. Vyhodnocovač výrazů (EE) může podporovat vizualizéry typů třetích stran a také vlastní prohlížeče.

Visual Studio určuje, kolik vizualizérů typů a vlastních prohlížečů jsou přidruženy k typu objektu voláním GetCustomViewerCount metoda. Pokud je k dispozici alespoň jeden vizualizér typu nebo vlastní prohlížeč, Visual Studio volá metodu GetCustomViewerList k načtení seznamu těchto vizualizérů a diváků (ve skutečnosti seznam s, který implementuje vizualizéry a prohlížeče) a prezentuje je uživateli.

Podpůrné vizualizéry typů

Existuje řada rozhraní, která musí EE implementovat pro podporu vizualizérů typů. Tato rozhraní je možné rozdělit do dvou širokých kategorií: rozhraní, která uvádějí vizualizéry typů a rozhraní, která přistupují k datům vlastností.

Vizualizéry typů výpisu

EE podporuje výpis vizualizérů typů v jeho implementaci IDebugProperty3::GetCustomViewerCount a IDebugProperty3::GetCustomViewerList. Tyto metody předají volání odpovídající metody GetCustomViewerCount a GetCustomViewerList.

IEEVisualizerService je získán voláním CreateVisualizerService. Tato metoda vyžaduje IDebugBinder3 rozhraní, které je získáno z IDebugBinder rozhraní předané EvaluateSync. IEEVisualizerServiceProvider::CreateVisualizerServicetaké vyžaduje IDebugSymbolProvider a IDebugAddress rozhraní, které byly předány IDebugParsedExpression::EvaluateSync. Poslední rozhraní potřebné k vytvoření IEEVisualizerService rozhraní je IEEVisualizerDataProvider rozhraní, které EE implementuje. Toto rozhraní umožňuje provádět změny vizualizované vlastnosti. Všechna data vlastností jsou zapouzdřena v IDebugObject rozhraní, které je také implementováno EE.

Přístup k datům vlastností

Přístup k datům vlastností se provádí prostřednictvím rozhraní IPropertyProxyEESide . Chcete-li získat toto rozhraní, Visual Studio volá QueryInterface na objektu vlastnosti získat IPropertyProxyProvider rozhraní (implementované ve stejném objektu, který implementuje IDebugProperty3 rozhraní) a pak volá GetPropertyProxy Metoda získat IPropertyProxyEESide rozhraní.

Všechna data předaná a mimo IPropertyProxyEESide rozhraní jsou zapouzdřena v rozhraní IEEDataStorage . Toto rozhraní představuje pole bajtů a je implementováno sadou Visual Studio i EE. Při změně dat vlastnosti visual Studio vytvoří IEEDataStorage objekt, který obsahuje nová data a volá CreateReplacementObject s tímto datovým objektem, aby získal nový IEEDataStorage objekt, který se následně předává inPlaceUpdateObject k aktualizaci dat vlastnosti. IPropertyProxyEESide::CreateReplacementObject umožňuje EE vytvořit instanci vlastní třídy, která implementuje IEEDataStorage rozhraní.

Podpora vlastních prohlížečů

DBG_ATTRIB_VALUE_CUSTOM_VIEWER Příznak je nastaven v dwAttrib poli struktury DEBUG_PROPERTY_INFO (vrácený voláním GetPropertyInfo) označující, že objekt má přiřazen vlastní prohlížeč. Pokud je tento příznak nastaven, Visual Studio získá IDebugProperty3 rozhraní z IDebugProperty2 rozhraní pomocí QueryInterface.

Pokud uživatel vybere vlastní prohlížeč, Visual Studio vytvoří instanci vlastního prohlížeče pomocí prohlížeče CLSID dodaného metodou IDebugProperty3::GetCustomViewerList . Visual Studio potom zavolá DisplayValue , aby zobrazila hodnotu uživateli.

IDebugCustomViewer::DisplayValue Za normálních okolností představuje zobrazení dat jen pro čtení. Aby bylo možné změny dat povolit, musí EE implementovat vlastní rozhraní, které podporuje změnu dat v objektu vlastnosti. Tato IDebugCustomViewer::DisplayValue metoda používá toto vlastní rozhraní k podpoře změny dat. Metoda hledá vlastní rozhraní v IDebugProperty2 rozhraní předané jako pDebugProperty argument.

Podpora vizualizérů typů i vlastních prohlížečů

EE může podporovat vizualizéry typů i vlastní prohlížeče v metodách GetCustomViewerCount a GetCustomViewerList . Nejprve EE přidá počet vlastních prohlížečů, které dodává hodnotě vrácené GetCustomViewerCount metoda. Za druhé, EE připojí CLSIDs vlastní prohlížeče do seznamu vrácené GetCustomViewerList metoda.