您應該重寫的ToString(),儘管在某些情況下,你可能只是找到下面的代碼有用:
public static class ObjectUtility
{
public static string ToDebug(this object obj)
{
if (obj == null)
return "<null>";
var type = obj.GetType();
var props = type.GetProperties();
var sb = new StringBuilder(props.Length * 20 + type.Name.Length);
sb.Append(type.Name);
sb.Append("\r\n");
foreach (var property in props)
{
if (!property.CanRead)
continue;
// AppendFormat defeats the point
sb.Append(property.Name);
sb.Append(": ");
sb.Append(property.GetValue(obj, null));
sb.Append("\r\n");
}
return sb.ToString();
}
}
用法是簡單地包括含ObjectUtility,然後命名空間...
var f = new F();
Console.WriteLine(f.ToDebug());
上面的反射用法對於高性能代碼並不是很好,因此不要在需要高性能的生產場景中使用它。