L'attribut DebuggerDisplay est très utile pour afficher une représentation textuelle explicite d'un type. C'est très utile surtout pour les collections. Pour vos propres types, il suffit d'ajouter l'attribut à votre déclaration de classe. Par exemple:
[DebuggerDisplay("{FirstName} {LastName}")] public class Person { public string FirstName { get; set; } public string LastName { get; set; } }
Mais comment procéder pour des types dont vous ne possédez pas le code source ? Et bien Microsoft a prévu ce cas de figure. Si vous allez dans C:\Users\<Votre nom d'utilisateur>\Documents\Visual Studio 2013\Visualizers\
, il y a un fichier nommé autoexp.cs
qui vous permet d'appliquer DebuggerDisplay
à n'importe quelle classe.
Par exemple, quand je développe pour Autodesk Vault, j'utilise une bibliothèque Autodesk.Connectivity.WebServices
dans lequel se trouve une classe File
. Pour avoir lors du débogage des informations plus utile que le simple nom du type, il me suffit d'ajouter la ligne suivante au fichier autoexp.cs
:
[assembly: DebuggerDisplay(@"\{Name = {Name}, Version = {VerNum}}", Target = typeof(Autodesk.Connectivity.WebServices.File))]
Ensuite je recompile le fichier avec l'option /t:library
pour créer une DLL :
"C:\Program Files (x86)\MSBuild\12.0\Bin\csc.exe" /t:library
/r:"C:\Program Files (x86)\Autodesk\Autodesk Vault 2014 SDK\bin\
Autodesk.Connectivity.WebServices.dll"
autoexp.cs
Notez que j'utilise l'option /r
pour inclure une référence à mon assemblage externe.
Je redémarre ensuite Visual Studio et j'ai alors un affichage nettement plus pratique :
C'est un peu compliqué mais ça marche. Si vous voulez quelque chose de plus simple, l'extension Visual Studio OzCode (payante) a une fonctionnalité Reveal qui fait sensiblement la même chose.