Condividi tramite


Previsto e visualizzando i dati

Digitare i dati correnti dei visualizzatori di personalizzati e dei visualizzatori in modo da rapidamente significativa allo sviluppatore. L'analizzatore di (EE) espressioni può supportare i visualizzatori di terze parti del tipo nonché fornire i propri visualizzatori personalizzati.

Visual Studio determina il numero di visualizzatori di tipi e visualizzatori personalizzati sono associati al tipo di oggetto chiamando IDebugProperty3:: GetCustomViewerCount il metodo. Se c " è almeno un visualizzatore del tipo o visualizzatore (disponibile, in Visual Studio IDebugProperty3:: GetCustomViewerList viene chiamato il metodo per recuperare un elenco dei visualizzatori e visualizzatori (in realtà, un elenco di CLSIDoggetti che implementa i visualizzatori e i visualizzatori) e li presenta all'utente.

Visualizzatori di supporto del tipo

Sono disponibili diverse interfacce che l'EE deve implementare per supportare i visualizzatori di tipi. Queste interfacce possono essere suddivise in due categorie principali: quelli che sono elencati i visualizzatori di tipi e quelli che accedono ai dati della proprietà.

Elenco di visualizzatori di tipi

L'EE supporta elenco di visualizzatori di tipi nell'implementazione di IDebugProperty3::GetCustomViewerCount e di IDebugProperty3::GetCustomViewerList. questi metodi passano la chiamata ai metodi corrispondenti IEEVisualizerService:: GetCustomViewerCount e IEEVisualizerService:: GetCustomViewerList.

IEEVisualizerService Viene ottenuto chiamando IEEVisualizerServiceProvider:: CreateVisualizerService. Questo metodo richiede IDebugBinder3 l'interfaccia, che viene ottenuto IDebugBinder dall'interfaccia passata IDebugParsedExpression:: EvaluateSync. IEEVisualizerServiceProvider::CreateVisualizerService richiede IDebugSymbolProvider anche e IDebugAddress le interfacce che sono stati passati a IDebugParsedExpression::EvaluateSync. L'interfaccia finale per creare l'interfaccia di IEEVisualizerService è IEEVisualizerDataProvider l'interfaccia, che l'EE implementa. Questa interfaccia consente le modifiche da apportare alla proprietà che viene visualizzata. Tutti i dati della proprietà sono IDebugObject incapsulati in un'interfaccia, che viene inoltre implementata dall'EE.

Accesso ai dati della proprietà

Accesso ai dati della proprietà viene effettuata tramite IPropertyProxyEESide l'interfaccia. Per ottenere questa interfaccia, le chiamate di Visual Studio QueryInterface alla proprietà dell'oggetto per IPropertyProxyProvider ottenere l'interfaccia (implementata nello stesso oggetto che implementa IDebugProperty3 l'interfaccia) e quindi chiama IPropertyProxyProvider:: GetPropertyProxy il metodo per ottenere l'interfaccia di IPropertyProxyEESide .

Tutti i dati sono trasformati e da IPropertyProxyEESide l'interfaccia è incapsulato IEEDataStorage nell'interfaccia. Questa interfaccia rappresenta una matrice di byte e distribuite da Visual Studio che dall'EE. Quando i dati di una proprietà devono essere modificati, in Visual Studio viene creato un oggetto di IEEDataStorage che utilizza i nuovi dati e chiamate IPropertyProxyEESide:: CreateReplacementObject a tale oggetto dati per ottenere un nuovo oggetto di IEEDataStorage che, a sua volta, viene passato IPropertyProxyEESide:: InPlaceUpdateObject per aggiornare i dati della proprietà. IPropertyProxyEESide::CreateReplacementObject consente dell'EE creare un'istanza della propria classe che implementa l'interfaccia di IEEDataStorage .

Visualizzatori personalizzati di supporto

Il flag DBG_ATTRIB_VALUE_CUSTOM_VIEWER è impostato nel campo di DEBUG_PROPERTY_INFORMATIONdwAttrib della struttura (restituita da IDebugProperty2:: GetPropertyInfouna chiamata) per indicare che l'oggetto ha un visualizzatore personalizzato. Quando questo flag è impostato, Visual Studio ottiene IDebugProperty3 l'interfaccia IDebugProperty2 dall'interfaccia QueryInterfaceutilizzando.

Se l'utente seleziona un visualizzatore personalizzato, Visual Studio crea un'istanza del visualizzatore personalizzato utilizzando CLSID del visualizzatore fornito con il metodo di IDebugProperty3::GetCustomViewerList . Chiamate IDebugCustomViewer:: DisplayValue di Visual Studio visualizzare il valore all'utente.

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

Sia visualizzatori di supporto del tipo che visualizzatori personalizzati

L'EE possibile supportare sia i visualizzatori di tipi che i visualizzatori personalizzati IDebugProperty3:: GetCustomViewerCount nei metodi e IDebugProperty3:: GetCustomViewerList . Innanzitutto, l'EE aggiunge il numero di visualizzatori personalizzati che produce il valore restituito dal IEEVisualizerService:: GetCustomViewerCount metodo. In secondo luogo, l'EE associa CLSIDi propri visualizzatori personalizzati all'oggetto restituito IEEVisualizerService:: GetCustomViewerList dal metodo.

Vedere anche

Concetti

Attività di debug

Visualizzatore del tipo e il visualizzatore personalizzate