Condividi tramite


Procedura: scrivere un visualizzatore

È possibile scrivere un visualizzatore personalizzato per un oggetto di qualsiasi classe gestita, ad eccezione di Object o Array.

L'architettura di un visualizzatore del debugger è definita da due parti:

  • Il lato debugger viene eseguito all'interno del debugger di Visual Studio.Il codice del lato debugger crea e visualizza l'interfaccia utente del visualizzatore.

  • Il lato oggetto del debug viene eseguito all'interno del processo sottoposto a debug in Visual Studio (l'oggetto del debug).

L'oggetto dati che si desidera visualizzare, ad esempio un oggetto stringa, esiste nel processo dell'oggetto del debug.Di conseguenza, il lato oggetto del debug deve inviare l'oggetto dati al lato debugger, che può quindi visualizzarlo in un'interfaccia utente creata dallo sviluppatore.

Il lato debugger riceve questo oggetto dati da visualizzare da un provider di oggetti, che implementa l'interfaccia IVisualizerObjectProvider.Il lato oggetto del debug invia l'oggetto dati tramite l'origine oggetto, che viene derivata da VisualizerObjectSource.Il provider di oggetti può inoltre inviare nuovamente i dati all'origine oggetto consentendo in tal modo di scrivere un visualizzatore che modifica e visualizza i dati.Il provider di oggetti può essere sottoposto a override per comunicare con l'analizzatore di espressioni e, di conseguenza, con l'origine oggetto.

L'oggetto del debug e il lato debugger comunicano tra loro tramite la classe Stream.Sono disponibili metodi che consentono di serializzare un oggetto dati in un oggetto Stream e deserializzare l'oggetto Stream in un oggetto dati.

Il codice dell'oggetto del debug viene specificato tramite l'attributo DebuggerVisualizer (DebuggerVisualizerAttribute).

Per creare l'interfaccia utente del visualizzatore nel lato debugger, è necessario creare una classe che eredita da DialogDebuggerVisualizer ed eseguire l'override del metodo DialogDebuggerVisualizer.Show per visualizzare l'interfaccia.

È possibile utilizzare IDialogVisualizerService per visualizzare Windows Forms, finestre di dialogo e controlli nel visualizzatore.

Il supporto per i tipi generici è limitato.È possibile scrivere un visualizzatore per una destinazione di tipo generico solo quest'ultimo è di tipo aperto.Questa limitazione è identica a quella prevista quando si utilizza l'attributo DebuggerTypeProxy.Per informazioni dettagliate, vedere Utilizzo dell'attributo DebuggerTypeProxy.

Ai visualizzatori personalizzati possono essere associate considerazioni sulla sicurezza.Per informazioni, vedere Considerazioni sulla sicurezza del visualizzatore.

Nelle procedure riportate di seguito vengono fornite informazioni generali sulle operazioni da effettuare per creare un visualizzatore.Per ulteriori informazioni, vedere Procedura dettagliata: scrittura di un visualizzatore in C#.

Per creare il lato debugger

  1. Utilizzare metodi IVisualizerObjectProvider per fornire l'oggetto visualizzato al lato debugger.

  2. Creare una classe che eredita da DialogDebuggerVisualizer.

  3. Eseguire l'override del metodo DialogDebuggerVisualizer.Show per visualizzare l'interfaccia.Utilizzare i metodi IDialogVisualizerService per visualizzare Windows Forms, finestre di dialogo e controlli all'interno dell'interfaccia.

  4. Applicare DebuggerVisualizerAttribute per assegnare un visualizzatore (DialogDebuggerVisualizer).

Per creare il lato oggetto del debug

  1. Applicare DebuggerVisualizerAttribute per assegnare un visualizzatore (DialogDebuggerVisualizer) e un'origine oggetto (VisualizerObjectSource).Se si omette l'origine oggetto, verrà utilizzata un'origine predefinita.

  2. Se si desidera che il visualizzatore sia in grado di modificare oggetti dati oltre a visualizzarli, eseguire l'override del metodo TransferData o CreateReplacementObject della classe VisualizerObjectSource.

Vedere anche

Attività

Procedura: installare un visualizzatore

Procedura: testare un visualizzatore ed eseguirne il debug

Concetti

Considerazioni sulla sicurezza del visualizzatore

Altre risorse

Visualizzatori