Что такое .NET-эквивалент PHP var_dump?
-
01-07-2019 - |
Вопрос
Я помню, как некоторое время назад видел, что в пространстве имен Reflection есть какой-то метод, который будет рекурсивно запускаться. ToString()
ко всем свойствам объекта и отформатируйте его для отображения.
Да, я знаю, что все, что мне нужно, будет доступно через отладчик, но мне интересно, знает ли кто-нибудь эту команду?
Решение
Я думаю, то, что вы ищете, называется ObjectDumper.Он использует отражение для перебора и вывода всех различных свойств объекта.Я впервые услышал об этом, изучая LINQ, и в большинстве примеров в книге Linq в действии он используется.
Похоже, что Microsoft не включила его в окончательную версию Linq, но код все еще находится в свободном доступе.Я быстро поискал в Google и вот ссылка на него:
Другие советы
Пример кода для дампа объекта и его свойств можно найти здесь:
Вы можете написать это самостоятельно.Например, сериализуйте его в json, используя библиотеку JSON.net от Newtonsoft, и запишите этот 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);
Я, конечно, мог бы увидеть в этом применение, но разве в .Net вы не получаете просто список имен типов (String, Array и т. д.)?Большинство встроенных модулей не имеют заранее написанных «полезных» перегрузок ToString(), не так ли?
Вот ссылка на дампер кода и демонстрационный проект, который покажет вам, как его использовать. Загрузите его здесь.