Ответ 1
Посмотрите здесь (ваш путь может отличаться):
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Образцы\1033\CSharpSamples.zip\LinqSamples\ObjectDumper
LINQPad поразителен, особенно полезен метод расширения Dump()
, который отображает объекты и структуры практически любого типа, анонимные или нет, на консоль.
Первоначально, когда я перешел в Visual Studio 2010, я попытался создать свой собственный метод Dump
, используя делегата, чтобы получить значения для рендеринга для анонимных типов и т.д. Это становится довольно сложным, хотя и в то время как это было весело и сначала мне нужна надежная реализация. Выбрав код LINQPad в рефлекторе, я еще более уверен, что я не верну его реализацию.
Есть ли бесплатная библиотека, которую я могу включить, чтобы обеспечить функциональность Dump
?
Посмотрите здесь (ваш путь может отличаться):
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Образцы\1033\CSharpSamples.zip\LinqSamples\ObjectDumper
Я написал метод расширения для Object, который использует сериализатор Json.Net с опцией симпатичного формата. 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);
}
}
diceguyd30 answer получен из обсуждение (особенно комментарии Пэт Куява и anunay) и описывает, как вызывать реализацию linqPad Dump как из С#, так и из VB.
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.