Condividi tramite


Utilizzo dell'attributo DebuggerTypeProxy

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 debugger vengono 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 del proxy del tipo ogni volta che è necessario visualizzare una variabile del tipo di destinazione.Questo può incidere sulle prestazioni.È quindi opportuno eseguire solo gli interventi strettamente necessari nel costruttore.

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 annidata 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

Riferimenti

Utilizzo dell'attributo DebuggerDisplay

Concetti

Visualizzazione di tipi di dati personalizzati

Miglioramento del debug tramite gli attributi di visualizzazione del debugger