Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Visual Studio中使用LINQPad Dump()扩展方法?_C#_Linqpad - Fatal编程技术网

C# 如何在Visual Studio中使用LINQPad Dump()扩展方法?

C# 如何在Visual Studio中使用LINQPad Dump()扩展方法?,c#,linqpad,C#,Linqpad,LINQPad令人惊讶,特别有用的是Dump()扩展方法,它将几乎任何类型的对象和结构呈现到控制台,不管是匿名的还是非匿名的 最初,当我搬到Visual Studio 2010时,我尝试使用委托来创建我自己的Dump方法,以获取匿名类型的值,等等。虽然这变得相当复杂,虽然一开始很有趣,很有教育意义,但我需要一个可靠的实现。在中检查了LINQPad代码之后,我更加确信我不会得到正确的实现 是否有免费的库可以提供转储功能?查看此处(您的路径可能会有所不同): C:\Program Files(x86

LINQPad令人惊讶,特别有用的是
Dump()
扩展方法,它将几乎任何类型的对象和结构呈现到控制台,不管是匿名的还是非匿名的

最初,当我搬到Visual Studio 2010时,我尝试使用委托来创建我自己的
Dump
方法,以获取匿名类型的值,等等。虽然这变得相当复杂,虽然一开始很有趣,很有教育意义,但我需要一个可靠的实现。在中检查了LINQPad代码之后,我更加确信我不会得到正确的实现

是否有免费的库可以提供
转储功能?

查看此处(您的路径可能会有所不同):


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

我为对象编写了一个扩展方法,该方法使用Json.Net序列化程序和pretty format选项。JSON在这样的格式下很容易阅读。你错过了类型信息,但我不知道你需要它,特别是考虑到这是多么容易。还没有让我失望。我使用Json.Net而不是MS,因为它能够处理复杂图形中的循环引用,而MS在我想到它的时候不能,或者没有

using Newtonsoft.Json;

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

    public static T Dump<T>(this T value)
    {
        Console.WriteLine(value.ToPrettyString());
        return value;
    }
}
使用Newtonsoft.Json;
公共静态类转储程序
{
公共静态字符串ToPrettyString(此对象值)
{
返回JsonConvert.SerializedObject(值,格式化.缩进);
}
公共静态T转储(此T值)
{
WriteLine(value.ToPrettyString());
返回值;
}
}
还有一个NuGet软件包。

的来源是)并介绍了如何从C#和VB.NET调用LINQPad转储实现:

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;
}
public静态字符串DumpToHtmlString(此T objectToSerialize)
{
字符串strHTML=“”;
尝试
{
var writer=LINQPad.Util.CreateXhtmlWriter(true);
writer.Write(objectToSerialize);
strHTML=writer.ToString();
}
捕获(异常exc)
{
Assert(false,“调查原因?”+exc);
}
返回strHTML;
}

+1非常方便的课程。我从来不知道那件事。我将把它复制到我的调试工具库中。ThanksI编译了它并将其添加为对我的项目的引用,但我在尝试构建时出错-ObjectDumper在当前上下文中不存在。你怎么称呼它?写是一个扩展方法还是一个静态方法。抱歉,我是C#的新手。编写者是可识别的。这个问题不应该被关闭,因为它没有引起辩论、争论、投票或扩展讨论。我从这里看到linqpad中的dump方法:--,我认为这是linqpad中使用的一个非常特殊的方法,所以我认为在真正的C#中没有简单的方法。正如它的描述,它可以自动将img转换为img,日历转换为日历,后面的真实代码中肯定有很多对象类型决策,我看了一下ObjectDumper,它最后使用了Write方法,即使用TextWriter类,所以我认为它所做的只是把所有的对象都写进字符串,也许不是你想要的。你已经看过这里了吗?要进一步模拟LINQPad的Dump()方法,请将此扩展方法添加到类:public static T Dump(此T值){Console.WriteLine(value.ToPrettyString());return value;}