c# - 在调试时序列化并打印对象的整个状态

标签 c# .net debugging oop object-state

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

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

有没有一种方法可以在 Debug模式下获得对象的完整打印输出,或者说,可以执行此操作的实用程序或 C# 函数?

最佳答案

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

PropertyInfo 类型 ( here ) 和 FieldInfo 类型 ( here ) 是您需要从 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.

关于c# - 在调试时序列化并打印对象的整个状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2248925/

相关文章:

r - 如何打开出现错误的矩阵

c# - Combobox.Text 和 combobox.Selecteditem 与 combobox.selectedValue?

C# 文件/文件夹监视器

.net - 如何在 F# 中打印格式化日期

c# - 如何在 Visual Studio 中启动并运行 SQLite?

.net - 无法使用 .net 远程处理

debugging - 如何查找ucrtbase.dll中指定偏移处执行的代码?

android - 在库中设置断点 Material 成分?

c# - 将虚拟列添加到强类型数据集

c# - 无法绘制任意颜色的球体