15

我记得不久前看到反射命名空间中可能有一些方法可以递归地ToString()在对象的所有属性上运行并很好地格式化它以供显示。

是的,我知道我想要的一切都可以通过调试器访问,但我想知道是否有人知道该命令?

4

5 回答 5

8

我认为您正在寻找的是/被称为 ObjectDumper。它使用反射来迭代并输出对象的所有不同属性。我是在学习 LINQ 时第一次听说它的,Linq in Action 一书中的大多数示例都使用它。

虽然微软似乎没有将它包含在 Linq 的最终版本中,但代码仍然存在。我做了一个快速的谷歌搜索,这里有一个链接:

ObjectDumper 源代码

于 2008-09-18T15:54:49.290 回答
4

可以在此处找到转储对象及其属性的示例代码:

http://www.developer.com/net/csharp/article.php/3713886

于 2008-09-18T15:50:05.447 回答
3

你可以自己写。例如,使用 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);
于 2016-12-08T06:47:52.993 回答
0

我当然可以看到这种东西的用途,但是在 .Net 中,您不会大多只是获得类型名称(字符串、数组等)的列表吗?大多数内置插件都没有预先编写“有用的” ToString() 重载,是吗?

于 2008-09-18T15:47:58.790 回答
0

这是一个包含代码转储程序的链接和一个演示项目,向您展示如何使用它。在这里下载

于 2008-09-18T16:48:34.667 回答