หลายครั้ง เราอยากดูค่าของ Property ต่างๆ ใน Object ที่สนใจ เมื่อก่อนเราต้องมาไล่ดูทีละตัว ซึ่งมันไม่สะดวกเลยครับ ตามรูปด้านล่างเลย
หรือ ถ้า Advance ขึ้นมาหน่อยใช้วิธี Override ToString() เอาครับ ซึ่งมันตอบโจทย์ระดับนึง แต่ถ้าเราต้องการใช้ ToString() ในเคสอื่นๆหละมันไม่จะไปขัดกับตอนแรกที่ทำ เพื่อจะ Debug ครับ
DebuggerDisplayAttribute พระเอกของเราครับ
เจ้าตัว DebuggerDisplayAttribute เอามาช่วยให้เราดูค่าของ property ที่ใช้ประจำได้สะดวกขึ้น โดยเพิ่ม Attribute นี้ที่หัวของ Class และกำหนด Property + Expression ที่ต้องการแสดงครับ
- รูปแบบ
[DebuggerDisplay("คำอธิบาย : {ใส่ชื่อตัวแปร หรือ Expression }")] class YourClass { .. }
- ตัวอย่าง
[DebuggerDisplay("Account SubType: {AccountSubType}, ValueDate: {ValueDate}, Portfolio Id: {PortfolioId}, SecurityId: {SecurityId}")] public class DailyAccMasterDTO : RepositoryDTO { .. public string AccountSubType { get; set; } public DateTime ValueDate { get; set; } public int PortfolioId { get; set; } public int SecurityId { get; set; } ... }
- อีกตัวอย่าง เพิ่มเรื่อง Expression
[DebuggerDisplay("Account SubType: {AccountSubType}, ValueDate: {ValueDate}, Portfolio Id: {PortfolioId}, IsMinusBook: {BookValue-ImpairmentValue > 0}")] public class DailyAccTxDTO : RepositoryDTO { .. public string AccountSubType { get; set; } public DateTime ValueDate { get; set; } public int PortfolioId { get; set; } public int SecurityId { get; set; } ... }
หลังจากใช้ DebuggerDisplayAttribute พบว่า
- ตอน Debug Code มันสะดวกขึ้นมาก มึส่วนสรุปทั้งตอนที่เอาเมล์จิ้มที่ตัวแปร หรือ ตอนที่ดูจากหน้าต่าง Watch ครับ
- และเก็บตัว ToString() เอาไว้ใช้กับเรืองอื่นๆ แทน และลด Code
Reference
- DebuggerDisplayAttribute Class (System.Diagnostics) | Microsoft Learn
- Customize object displays in the Visual Studio debugger YOUR way - Visual Studio Blog (microsoft.com)
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.