다음은 MyClassCollection 클래스의 디버깅 시의 표현되는 정보입니다.
List<T>와는 다르게 내부의 요소의 값을 확인하는데 어려움이 존재합니다.
이것을 List<T>처럼 구성해 보겠습니다.
[System.Diagnostics.DebuggerDisplay("{Value}", Name = "{Name}")] class MyClass { public String Name; public String Value; public MyClass(String name, String value) { this.Name = name; this.Value = value; } } [System.Diagnostics.DebuggerDisplay("Count = {Count}")] [System.Diagnostics.DebuggerTypeProxy(typeof(CollectionDebugView))] class MyClassCollection : CollectionBase, ICollection { public MyClass Add(String name, String value) { Int32 i = base.InnerList.Add(new MyClass(name, value)); return base.InnerList[i] as MyClass; } } class CollectionDebugView { private ICollection collection; public CollectionDebugView(ICollection collection) { this.collection = collection; } [System.Diagnostics.DebuggerBrowsable(System.Diagnostics.DebuggerBrowsableState.RootHidden)] public MyClass[] MyClasses { get { List<myclass> myClasses = new List<myclass>(collection.Count); foreach (object key in collection) { MyClass myClass = key as MyClass; if (myClass != null) { myClasses.Add(myClass); } } return myClasses.ToArray(); } } } class Program { static void Main(string[] args) { MyClassCollection col = new MyClassCollection(); col.Add("Name1", "Value1"); } }
위처럼 구성하면 아래와 같이 보이게 됩니다.