Watch your object
כשאנחנו מסתכלים ב watcher על אובייקט כלשהו, אנחנו רואים למעשה את ה ToStfing שלו,
לדוגמא אם האוביקט שלנו נראה כך:
1 public class Person
2 {
3 public int Id { get; set; }
4 public string Name { get; set; }
5
6 public Person(int id, string name)
7 {
8 Id = id;
9 Name = name;
10 }
11 }
ונעמוד עליו ב debug נראה את הדבר הבא:
כמו שאנחנו רואים, בעמודת ה value אנחנו מקבלים את ה ToString ה default של המערכת (שזה שם ה namesapce.class)
אם אנחנו רוצים לראות לדוגמה את השם, אפשרות ראשונה זה כמובן לעשות override ל ToString
16 public class Person
17 {
18 public int Id { get; set; }
19 public string Name { get; set; }
20
21 public Person(int id, string name)
22 {
23 Id = id;
24 Name = name;
25 }
26
27 public override string ToString()
28 {
29 return Name;
30 }
31 }
עכשיו נקבל ב debug את הערך שיש ב Name:
לפעמים אנחנו לא נרצה לעשות override רק עבור המטרה הזאת, או אם נרצה להציג ב debug גם את ה Id, אבל ב ToString נרצה להחזיר רק את ה Name,
לכן הגיע ה attribute המיוחד DebuggerDisplay שאיתו נוכל להחליט מה בדיוק אנחנו רוצים להציג ב debug.
17 [DebuggerDisplay("Name = {Name}, Id = {Id}")]
18 public class Person
19 {
20 public int Id { get; set; }
21 public string Name { get; set; }
22
23 public Person(int id, string name)
24 {
25 Id = id;
26 Name = name;
27 }
28
29 public override string ToString()
30 {
31 return Name;
32 }
33 }
ועכשיו כשנסתכל ב debug נראה את הדבר הבא: