编写程序跟踪输出时,有时候需要输出某个对象所有字段和属性的值,类似于Watch。如果只有一个两个类的对象,事情并不麻烦,但是如果有很多类的对象,那么单独写就很费时。鉴于此,我写了一个通用的对象转储输出类,用于针对绝大多数对象进行转储为字符串形式。
}
}
}
不同的ObjectDumpOptions指示不同的输出格式:
Fields:转储字段
Properties:转储属性
NonPublic:转储非公共成员(字段、属性等)
Static:转储静态成员(如选择此选项,则实例成员不会包括的输出中)
Recursive:递归转储所有内含的类型(如不包含此项,则仅转储直接成员)
ExpandArray:扩展所有数组元素(如不包含此项,则仅输出数组的元素类型以及元素数量
WithType:输出结果中包含字段或属性的类型名
UsingFullTypeName:使用完整的类型名(包含名字空间)
UsingTypeKeywords:使用C#的关键字来代替部分内置类型,如int表示Int32
WithName:输出结果中包含字段或属性的名称
SingleLine:单行输出(如果不包含此项,则会适当分行)
NullIsNull:如果输入对象是null,则转储结果为null,否则转储结果为字符串“<null>”
Default,DefaultBrief,DefaultBriefMultiLines:包括一些常用的选项。
DumpObject函数用于转储一个对象,DumpMethod函数用于转储一个方法的调用。对于下面这个程序:
Console.WriteLine(dump);
}
}
输出的结果是:
(Test)[
m_field = (int)100,
Property = (int)100
]