4

在调试 ASP.NET 应用程序时,我想打印出一个非常大的对象的整个状态。我想要该对象中的所有属性和值,并且递归地对每个对象属性都相同。

因为应用程序的前端在显着延迟后超时,所以我无法添加手表或使用即时窗口或将鼠标悬停在对象上,因为没有足够的时间来全面检查对象。

有没有办法在调试模式下获得对象的完整打印输出,或者说,可以做到这一点的实用程序或 C# 函数?

4

2 回答 2

1

您可以使用反射来获取类类型上所有属性和字段的列表,然后使用它来获取每个属性/值的运行时值并将它们吐到控制台。

PropertyInfo类型(此处)和FieldInfo类型(此处)是您需要从Type对象中为您自己的类实例获取的内容。

MyObject myObject = ... //setup my object
Type myType = myObject.GetType(); //or Type.GetType(myObject); //I think

PropertyInfo[] properties = myType.GetProperties();
FieldInfo[] fields = myType.GetFields();

properties[0].GetValue(myObject); //returns the value as an Object, so you may need to cast it afterwards.
于 2010-02-12T00:59:54.503 回答
0

反射确实是您最好的选择。您可以从根对象开始,获取其所有属性及其值,如有必要,递归地从这些值中获取属性和值。这是一个非常强大的技术,如果你还不知道它,你可能无论如何都应该学习它,这是一个完美的学习项目。:)

于 2010-02-16T01:05:58.803 回答