Utilizzo dell'attributo DebuggerTypeProxy

Aggiornamento: novembre 2007

Le informazioni contenute in questo argomento sono valide per:

Edition

Visual Basic

C#

C++

Web Developer

Express

Argomento applicabile Argomento applicabile Argomento applicabile Argomento applicabile

Standard

Argomento applicabile

Argomento applicabile

Argomento applicabile

Argomento applicabile

Pro e Team

Argomento applicabile

Argomento applicabile

Argomento applicabile

Argomento applicabile

Legenda tabella:

Argomento applicabile

Applicabile

Argomento non applicabile

Non applicabile

Argomento valido ma comando nascosto per impostazione predefinita

Comando o comandi nascosti per impostazione predefinita.

DebuggerTypeProxyAttribute specifica un proxy, o uno stand-in, per un tipo e modifica il modo in cui il tipo viene visualizzato nelle finestre del debugger. Quando viene visualizzata una variabile che dispone di proxy, il proxy sostituisce il tipo originale nella visualizzazione. Nella finestra delle variabili del debuggervengono visualizzati soltanto i membri pubblici del tipo proxy. I membri privati non vengono visualizzati.

Questo attributo può essere applicato a:

  • Strutture

  • Classi

  • Assembly

Una classe proxy di tipi deve disporre di un costruttore che accetta un argomento del tipo sostituito dal proxy. Il debugger crea una nuova istanza della classe proxy del tipo ogni volta che occorre visualizzare una variabile del tipo di destinazione. Questa caratteristica può avere implicazioni sulle prestazioni. Di conseguenza, è opportuno non eseguire nel costruttore più operazioni di quelle strettamente necessarie.

Per ridurre gli effetti negativi sulle prestazioni, l'analizzatore di espressioni non esamina gli attributi nel proxy visualizzato per il tipo a meno che il tipo non venga espanso dall'utente facendo clic sul simbolo + nella finestra del debugger o tramite DebuggerBrowsableAttribute. È pertanto sconsigliabile collocare attributi sul tipo visualizzato. È possibile e consigliabile utilizzare gli attributi nel corpo del tipo visualizzato.

È opportuno che il proxy del tipo sia una classe nidificata privata all'interno della classe di destinazione dell'attributo. In questo modo l'attributo può accedere facilmente ai membri interni.

Se DebuggerTypeProxyAttribute viene utilizzato a livello di assembly, il parametro Target specifica il tipo che verrà sostituito dal proxy.

Per un esempio sulla modalità di utilizzo di questo attributo con DebuggerDisplayAttribute e DebuggerTypeProxyAttribute, vedere Utilizzo dell'attributo DebuggerDisplay.

Utilizzo di generics con DebuggerTypeProxy

Il supporto per generics è limitato. In C# DebuggerTypeProxy supporta solo tipi aperti. Un tipo aperto, noto anche come tipo non costruito, è un tipo generico per il quale non è stata creata un'istanza con argomenti relativi ai parametri di tipo. I tipi chiusi, noti anche come tipi costruiti, non sono supportati.

La sintassi per un tipo aperto è simile alla seguente:

Namespace.TypeName<,>

Se si utilizza un tipo generico come destinazione in DebuggerTypeProxy, è necessario adottare questa sintassi. Il meccanismo di DebuggerTypeProxy deriva automaticamente i parametri di tipo.

Per ulteriori informazioni sui tipi aperti e chiusi in C#, vedere la sezione 20.5.2 relativa nella Specifiche del linguaggio C#.

In Visual Basic non è disponibile la sintassi dei tipi aperti pertanto non è possibile eseguire la stessa operazione in questo linguaggio, ma è necessario utilizzare una rappresentazione del nome del tipo aperto in formato stringa.

"Namespace.TypeName'2"

Vedere anche

Concetti

Visualizzazione di tipi di dati personalizzati

Miglioramento del debug tramite gli attributi di visualizzazione del debugger

Riferimenti

Utilizzo dell'attributo DebuggerDisplay