PropertyInfo를 이용해서 간단히 슥삭. 너무나 편하게 debuging할 수 있는 방법이라서 자주 사용하기도 하고, 긁어서 그냥 넣어주면 편해서 올려둔다. 기본적으로 Property Invoke를 이용해서 각 값을 얻어내고, 그 값을 표시하는 방법인데... 이모저모로 편하구.
public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendLine(string.Format("<{0}>", GetType().Name)); foreach(PropertyInfo property in GetType().GetProperties()) { string propertyName = property.Name; object value = property.GetValue(this, null); if(value != null) { if(value is IEnumerable && !(value is string)) { sb.AppendLine(string.Format("<{0}>", propertyName)); IEnumerator enumerator = ((IEnumerable)value).GetEnumerator(); while(enumerator.MoveNext()) { sb.AppendLine(enumerator.Current.ToString()); } sb.AppendLine(string.Format("{0}>", propertyName)); } else { sb.AppendLine(string.Format("<{0}>{1}{0}>", propertyName, value.ToString())); } } } sb.Append(string.Format("{0}>", GetType().Name)); return sb.ToString(); }