调试用对象输出

编写程序跟踪输出时,有时候需要输出某个对象所有字段和属性的值,类似于Watch。如果只有一个两个类的对象,事情并不麻烦,但是如果有很多类的对象,那么单独写就很费时。鉴于此,我写了一个通用的对象转储输出类,用于针对绝大多数对象进行转储为字符串形式。

 

Code

 

不同的ObjectDumpOptions指示不同的输出格式:

 

Fields:转储字段

Properties:转储属性

NonPublic:转储非公共成员(字段、属性等)

Static:转储静态成员(如选择此选项,则实例成员不会包括的输出中)

Recursive:递归转储所有内含的类型(如不包含此项,则仅转储直接成员)

ExpandArray:扩展所有数组元素(如不包含此项,则仅输出数组的元素类型以及元素数量

WithType:输出结果中包含字段或属性的类型名

UsingFullTypeName:使用完整的类型名(包含名字空间)

UsingTypeKeywords:使用C#的关键字来代替部分内置类型,如int表示Int32

WithName:输出结果中包含字段或属性的名称

SingleLine:单行输出(如果不包含此项,则会适当分行)

NullIsNull:如果输入对象是null,则转储结果为null,否则转储结果为字符串“<null>”

Default,DefaultBrief,DefaultBriefMultiLines:包括一些常用的选项。

 

DumpObject函数用于转储一个对象,DumpMethod函数用于转储一个方法的调用。对于下面这个程序:

 

Code

 

输出的结果是:

 

(Test)[
  m_field = (int)100,
  Property = (int)100
]

 

 

posted @ 2009-04-06 23:31  Ling Xu  阅读(1054)  评论(1编辑  收藏  举报