Utilizzo dell'attributo DebuggerTypeProxy
Le informazioni contenute in questo argomento sono valide per:
Edizione |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
|||||
Pro, Premium e Ultimate |
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. è 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 C# Language Specification.
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