Что такое .NET-эквивалент PHP var_dump? - PullRequest
14 голосов
/ 18 сентября 2008

Я помню, как видел некоторое время назад, что в пространстве имен Reflection есть какой-то метод, который будет рекурсивно запускать ToString() для всех свойств объекта и хорошо его форматировать для отображения.

Да, я знаю, что все, что я мог бы хотеть, будет доступно через отладчик, но мне интересно, знает ли кто-нибудь эту команду?

Ответы [ 5 ]

8 голосов
/ 18 сентября 2008

Я думаю, что то, что вы ищете, называется / было ObjectDumper. Он использует отражение, чтобы перебрать и вывести все различные свойства объекта. Я впервые услышал об этом во время изучения LINQ, и большинство примеров из книги Linq in Action используют его.

Похоже, что Microsoft не включила его в окончательную версию Linq, но код все еще находится на свободе Я сделал быстрый поиск в Google и вот ссылка на него:

Исходный код ObjectDumper

4 голосов
/ 18 сентября 2008

Пример кода для выгрузки объекта и его свойств можно найти здесь:

http://www.developer.com/net/csharp/article.php/3713886

1 голос
/ 08 декабря 2016

Вы можете написать это самостоятельно. Например, сериализовать его в 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);
0 голосов
/ 18 сентября 2008

Вот ссылка с дампером кода и демонстрационный проект, который показывает вам, как его использовать. Скачать здесь .

0 голосов
/ 18 сентября 2008

Я, конечно, мог видеть использование в таких вещах, но в .Net разве вы не получите в основном список имен типов (String, Array и т. Д.)? Большинство встроенных модулей не имеют предварительно написанных «полезных» перегрузок ToString (), не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...