我记得不久前看到反射命名空间中可能有一些方法可以递归地ToString()
在对象的所有属性上运行并很好地格式化它以供显示。
是的,我知道我想要的一切都可以通过调试器访问,但我想知道是否有人知道该命令?
我记得不久前看到反射命名空间中可能有一些方法可以递归地ToString()
在对象的所有属性上运行并很好地格式化它以供显示。
是的,我知道我想要的一切都可以通过调试器访问,但我想知道是否有人知道该命令?
我认为您正在寻找的是/被称为 ObjectDumper。它使用反射来迭代并输出对象的所有不同属性。我是在学习 LINQ 时第一次听说它的,Linq in Action 一书中的大多数示例都使用它。
虽然微软似乎没有将它包含在 Linq 的最终版本中,但代码仍然存在。我做了一个快速的谷歌搜索,这里有一个链接:
可以在此处找到转储对象及其属性的示例代码:
你可以自己写。例如,使用 Newtonsoft 的 JSON.net 库将其序列化为 json 并将该 json 写入控制台。这是一个例子:
using Newtonsoft.Json;
static class Pretty
{
public static void Print<T> (T x)
{
string json = JsonConvert.SerializeObject(x, Formatting.Indented);
Console.WriteLine(json);
}
}
用法:
Pretty.Print(whatever);
我当然可以看到这种东西的用途,但是在 .Net 中,您不会大多只是获得类型名称(字符串、数组等)的列表吗?大多数内置插件都没有预先编写“有用的” ToString() 重载,是吗?
这是一个包含代码转储程序的链接和一个演示项目,向您展示如何使用它。在这里下载。