Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

Вы можете написать это самостоятельно.Например, сериализуйте его в 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(), не так ли?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top