如何在Visual Studio中使用LinqPad .Dump()扩展方法?

LINQPad是惊人的,尤其有用的是Dump()扩展方法,它能够将几乎任何types的对象和结构(匿名或不可匿名Dump()呈现给控制台。

最初,当我转移到Visual Studio 2010时,我尝试使用委托创build自己的Dump方法来获取为匿名types呈现的值等等。虽然这很有趣,但是起初我很需要一个坚实的实施。 检查了reflection器中的LINQPad代码后,我更加确信,我不会执行正确的操作。

有没有免费的图书馆,我可以包括提供Dumpfunction?

看这里(你的path可能会有所不同):

C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Samples \ 1033 \ CSharpSamples.zip \ LinqSamples \ ObjectDumper

我写了一个扩展方法给Object,它使用带有漂亮格式选项的Json.Net序列化程序。 当格式化的JSON很容易阅读。 你错过了types信息,但我不知道你需要这个,特别是考虑到这是多么容易。 还没有让我失望 我使用Json.Net而不是MS',因为它具有在复杂graphics中处理循环引用的能力,MS不能或当时没有想到它。

  using Newtonsoft.Json; public static class Dumper{ public static string ToPrettyString(this object value) { return JsonConvert.SerializeObject(value, Formatting.Indented); } } 

diceguyd30的答案来源于讨论(特别是Pat Kujawa和Anunay的评论 ),并描述了如何从c#和VB中调用linqPad Dump实现。

  public static string DumpToHtmlString<T>(this T objectToSerialize) { string strHTML = ""; try { var writer = LINQPad.Util.CreateXhtmlWriter(true); writer.Write(objectToSerialize); strHTML = writer.ToString(); } catch (Exception exc) { Debug.Assert(false, "Investigate why ?" + exc); } return strHTML; } 

还有一个名为ObjectDumper的类库,可作为NuGet包使用。