Condividi tramite


Visualizzazione e visualizzazione dei dati

I visualizzatori di tipi e i visualizzatori personalizzati presentano i dati in modo che sia rapidamente significativo per uno sviluppatore. L'analizzatore di espressioni (edizione Enterprise) può supportare visualizzatori di tipi di terze parti e fornire visualizzatori personalizzati.

Visual Studio determina il numero di visualizzatori di tipi e visualizzatori personalizzati associati al tipo dell'oggetto chiamando il metodo GetCustomViewerCount . Se è disponibile almeno un visualizzatore di tipi o visualizzatore personalizzato, Visual Studio chiama il metodo GetCustomViewerList per recuperare un elenco di tali visualizzatori e visualizzatori (in realtà, un elenco di che implementa i visualizzatori e i visualizzatori) e li presenta all'utente.

Visualizzatori di tipi di supporto

Esistono diverse interfacce che il edizione Enterprise deve implementare per supportare i visualizzatori dei tipi. Queste interfacce possono essere suddivise in due categorie generali: interfacce che elencano i visualizzatori di tipi e le interfacce che accedono ai dati della proprietà.

Visualizzare il tipo di elenco

Il edizione Enterprise supporta l'elenco dei visualizzatori di tipi nell'implementazione di IDebugProperty3::GetCustomViewerCount e IDebugProperty3::GetCustomViewerList. Questi metodi passano la chiamata ai metodi corrispondenti GetCustomViewerCount e GetCustomViewerList.

I edizione Enterprise VisualizerService viene ottenuto chiamando CreateVisualizerService. Questo metodo richiede l'interfaccia IDebugBinder3, ottenuta dall'interfaccia IDebugBinder passata a EvaluateSync. IEEVisualizerServiceProvider::CreateVisualizerService richiede anche le interfacce IDebugSymbolProvider e IDebugAddress , passate a IDebugParsedExpression::EvaluateSync. L'interfaccia finale necessaria per creare l'interfaccia IEEVisualizerService è l'interfaccia I edizione Enterprise VisualizerDataProvider, implementata dall'edizione Enterprise. Questa interfaccia consente di apportare modifiche alla proprietà visualizzata. Tutti i dati delle proprietà vengono incapsulati in un'interfaccia IDebugObject, implementata anche dal edizione Enterprise.

Accesso ai dati delle proprietà

L'accesso ai dati delle proprietà viene eseguito tramite l'interfaccia IPropertyProxy edizione Enterprise Side. Per ottenere questa interfaccia, Visual Studio chiama QueryInterface sull'oggetto proprietà per ottenere l'interfaccia IPropertyProxyProvider (implementata nello stesso oggetto che implementa l'interfaccia IDebugProperty3 ) e quindi chiama il metodo GetPropertyProxy per ottenere l'interfaccia IPropertyProxyEESide .

Tutti i dati passati all'interno e all'esterno dell'interfaccia IPropertyProxyEESide vengono incapsulati nell'interfaccia I edizione Enterprise Data Archiviazione. Questa interfaccia rappresenta una matrice di byte e viene implementata sia da Visual Studio che dalla edizione Enterprise. Quando i dati di una proprietà devono essere modificati, Visual Studio crea un IEEDataStorage oggetto che contiene i nuovi dati e chiama CreateReplacementObject con tale oggetto dati per ottenere un nuovo IEEDataStorage oggetto che, a sua volta, viene passato a InPlaceUpdateObject per aggiornare i dati della proprietà. IPropertyProxyEESide::CreateReplacementObjectconsente al edizione Enterprise di creare un'istanza della propria classe che implementa l'interfaccia IEEDataStorage .

Supporto di visualizzatori personalizzati

Il flag DBG_ATTRIB_VALUE_CUSTOM_VIEWER viene impostato nel dwAttrib campo della struttura DEBUG_PROPERTY_INFO (restituita da una chiamata a GetPropertyInfo) per indicare che all'oggetto è associato un visualizzatore personalizzato. Quando questo flag è impostato, Visual Studio ottiene l'interfaccia IDebugProperty3 dall'interfaccia IDebugProperty2 usando QueryInterface.

Se l'utente seleziona un visualizzatore personalizzato, Visual Studio crea un'istanza CLSID del visualizzatore personalizzato usando il IDebugProperty3::GetCustomViewerList visualizzatore fornito dal metodo . Visual Studio chiama quindi DisplayValue per mostrare il valore all'utente.

In genere, IDebugCustomViewer::DisplayValue presenta una visualizzazione di sola lettura dei dati. Per consentire le modifiche ai dati, il edizione Enterprise deve implementare un'interfaccia personalizzata che supporta la modifica dei dati in un oggetto proprietà. Il IDebugCustomViewer::DisplayValue metodo usa questa interfaccia personalizzata per supportare la modifica dei dati. Il metodo cerca l'interfaccia personalizzata nell'interfaccia IDebugProperty2 passata come pDebugProperty argomento.

Supporto di visualizzatori di tipi e visualizzatori personalizzati

Un edizione Enterprise può supportare visualizzatori di tipi e visualizzatori personalizzati nei metodi GetCustomViewerCount e GetCustomViewerList. In primo luogo, il edizione Enterprise aggiunge il numero di visualizzatori personalizzati che fornisce al valore restituito dal metodo GetCustomViewerCount. In secondo luogo, l'edizione Enterprise aggiunge i CLSIDrelativi visualizzatori personalizzati all'elenco restituito dal metodo GetCustomViewerList.