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();
}



