【问题标题】:What is the .NET equivalent of PHP var_dump?PHP var_dump 的 .NET 等价物是什么?
【发布时间】:2008-09-18 15:40:47
【问题描述】:

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

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

【问题讨论】:

  • 今天使用任何好的序列化程序
  • JsonConvert.SerializeObject(myVar)

标签: .net reflection


【解决方案1】:

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

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

ObjectDumper Source Code

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案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);
      

      【讨论】:

      • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        这是一个包含代码转储程序的链接和一个演示项目,向您展示如何使用它。 Download it here.

        【讨论】:

          猜你喜欢
          • 2010-09-23
          • 2010-09-27
          • 1970-01-01
          • 2011-10-13
          • 1970-01-01
          • 1970-01-01
          • 2011-08-05
          • 2010-09-24
          • 2011-12-25
          相关资源
          最近更新 更多