是否有一个库提供像LinqPad这样的格式化转储()函数?
我在代码中使用了很多Linq查询,我正在寻找一个库,它提供了一个格式化的Dump()函数,类似于LinqPad提供的函数。LinqPad的Dump()扩展方法非常好,因为它可以很好地处理嵌套集合 理想情况下,它会以纯文本打印出漂亮的表格,但我可以输出HTML或其他格式良好的数据是否有一个库提供像LinqPad这样的格式化转储()函数?,linq,linqpad,Linq,Linqpad,我在代码中使用了很多Linq查询,我正在寻找一个库,它提供了一个格式化的Dump()函数,类似于LinqPad提供的函数。LinqPad的Dump()扩展方法非常好,因为它可以很好地处理嵌套集合 理想情况下,它会以纯文本打印出漂亮的表格,但我可以输出HTML或其他格式良好的数据 VS中的ObjectDumper示例根本没有剪切它。这就是我一直在使用的: C#(直接根据Pat Kujawa的评论(尽管我让它自己返回,以便像linqpad的版本一样连锁)): 公共静态T转储(此T o){ var
VS中的ObjectDumper示例根本没有剪切它。这就是我一直在使用的: C#(直接根据Pat Kujawa的评论(尽管我让它自己返回,以便像linqpad的版本一样连锁)):
公共静态T转储(此T o){
var localUrl=Path.GetTempFileName()+“.html”;
使用(var writer=LINQPad.Util.CreateXhtmlWriter(true))
{
作者:写(o);
File.WriteAllText(localUrl,writer.ToString());
}
Process.Start(localUrl);
返回o;
}
VB(我的转换,因为我在VB应用程序中需要它):
公共模块LinqDebugging
公共函数转储(Of T)(ByVal o As T)As T
Dim localUrl=Path.GetTempFileName()+“.html”
使用writer=LINQPad.Util.CreateXhtmlWriter(True)
写作(o)
File.WriteAllText(localUrl,writer.ToString())
终端使用
Process.Start(localUrl)
返回o
端函数
端模块
您需要在项目中添加linqpad可执行文件作为参考以及System.IO
和System.Diagnostics
这将启动默认的web浏览器,显示linqpad将生成的确切输出。正如diceguyd30所指出的,您实际上可以直接在代码中访问linqpad可执行文件,并让它自己生成HTML。如果您试图将HTML作为程序正常执行的一部分输出到接口,那么这将是最有效的
如果您的目的是生成可以在程序运行时监视的调试数据,另一个选项是使用
控制台.Write(object)
方法,然后将控制台.Out
设置为可以智能地格式化对象的内容。例如,您可以从LINQPad引用可执行文件,并使用它执行正在调试的方法,LINQPad将处理任何控制台。WriteLine(object)
调用与调用object.Dump()
相同的调用,以使引用LINQPad.exe更容易,现在框架3.5和4.0版本都有任何AnyCPU版本:www.linqpad.net/beta.aspxI想知道在您自己的代码中使用此转储方法是否违反了til eula?From:用法您可以使用商业或非商业应用程序或库重新分发未修改版本的LINQPad可执行文件,其唯一目的是允许最终用户运行LINQPad。用于其他目的的重新分发需要许可方的书面许可。我建议仅在调试问题时使用此功能。无论何时我们构建最终产品,LINQPad都会在项目参考中列为“不包括”。您可能希望这样:
public static T Dump<T>(this T o) {
var localUrl = Path.GetTempFileName() + ".html";
using (var writer = LINQPad.Util.CreateXhtmlWriter(true))
{
writer.Write(o);
File.WriteAllText(localUrl, writer.ToString());
}
Process.Start(localUrl);
return o;
}
Public Module LinqDebugging
<System.Runtime.CompilerServices.Extension()>
Public Function Dump(Of T)(ByVal o As T) As T
Dim localUrl = Path.GetTempFileName() + ".html"
Using writer = LINQPad.Util.CreateXhtmlWriter(True)
writer.Write(o)
File.WriteAllText(localUrl, writer.ToString())
End Using
Process.Start(localUrl)
Return o
End Function
End Module