Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.