Sdílet prostřednictvím


Vizualizace a zobrazení dat

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

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 prohlížečů (ve skutečnosti seznam objektů, které implementují vizualizéry a prohlížeče) a prezentuje je uživateli.

Podpora vizualizérů 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ů seznamů

EE podporuje výpis vizualizérů typů ve své 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 rozhraní IDebugBinder3, které je získáno z rozhraní IDebugBinder a je předáváno do EvaluateSync. IEEVisualizerServiceProvider::CreateVisualizerService také vyžaduje rozhraní IDebugSymbolProvider a IDebugAddress, která byla předána 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, aby získalo rozhraní IPropertyProxyProvider (implementované ve stejném objektu, který implementuje rozhraní IDebugProperty3), a pak volá metodu GetPropertyProxy k získání rozhraní IPropertyProxyEESide.

Všechna data vstupující do a vystupující z 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á, k hodnotě vrácené metodou GetCustomViewerCount. Za druhé, EE připojí CLSID vlastní vlastní prohlížeče do seznamu vráceného metodou GetCustomViewerList.