Tip when using DebuggerDisplay in Dotnet/Visual studio
When debugging and watching an object one only sees the name of the type in the debugger.
1 | MyProjectNamespace.Meeting |
The quickest solution is to click the little plus sign or use the keyboard right arrow to show the properties. This is ok to do once or twice but doing this for every comparison is a waste of time at best.
Better then is to use SystemDiagnostics.DebuggerDisplay like so:
1 2 3 | [DebuggerDisplay("ID:{ID}, UID:{UID}, Name:{Name}, Type:{this.GetType()}")] public class Meeting : BaseClass { ... |
to get
1 | ID:1, UID:234abc, Name:XYZ, Type:MyProjectNamespace.Meeting |
The Tip was to use {this.GetType()} in the argument of DebuggerDisplay.
Update
To show count of lists use something in the lines of:
1 | [DebuggerDisplay("ID:{ID},Customers:{Customers==null?(int?)null:Customers.Count}")] |
Update update
Since the DebuggerDisplay parameter is written as is into the assembly it might not work between languages. A solution for this is to call a method instead as most lanuguages uses the MyMethod() syntax.
It is also creates less overhead to call a method instead of having the expression in a string according to the MSDN link below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [DebuggerDisplay("{DebuggerDisplay(),nq}")] public class ExchangeRateDto { public int ID { get; set; } public string Name { get; set; } #if DEBUG private string DebuggerDisplay() { return $"ID:{this.ID}, Name:{this.Name}, Type:{this.GetType()}"; } } #endif |
Praise where praise is due: https://blogs.msdn.microsoft.com/jaredpar/2011/03/18/debuggerdisplay-attribute-best-practices/.
There is more documentation at Stack overflow documentation.
Tags: csharp, debuggerdisplay, debugging, dotnet