Сериализация и печать всего состояния объекта при отладке - PullRequest
4 голосов
/ 12 февраля 2010

При отладке приложения ASP.NET я хочу получить распечатку всего состояния очень большого объекта. Я хочу, чтобы все свойства и значения в этом объекте были одинаковыми для каждого свойства объекта, рекурсивно.

Поскольку внешний интерфейс приложения истекает после значительной задержки, я не могу добавить часы, использовать окно «Немедленно» или навести курсор мыши на объект, поскольку не будет достаточно времени для полного изучения объекта.

Есть ли способ получить полную распечатку объекта в режиме отладки или, скажем, утилиту или функцию C #, которая бы это делала?

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

Вы можете использовать отражение , чтобы получить список всех свойств и полей типа класса, а затем использовать его, чтобы получить значения времени выполнения каждого из этих свойств / значений и плюнуть их на консоль.

Тип PropertyInfo ( здесь ) и тип FieldInfo ( здесь ) - это то, что вам нужно получить от объекта Type для вашего собственного экземпляра класса.

MyObject myObject = ... //setup my object
Type myType = myObject.GetType(); //or Type.GetType(myObject); //I think

PropertyInfo[] properties = myType.GetProperties();
FieldInfo[] fields = myType.GetFields();

properties[0].GetValue(myObject); //returns the value as an Object, so you may need to cast it afterwards.
0 голосов
/ 16 февраля 2010

Отражение - действительно ваша лучшая ставка здесь. Вы можете начать с корневого объекта, получить все его свойства и их значения и, если необходимо, получить свойства и значения из этих значений рекурсивно. Это действительно мощная техника, и если вы ее еще не знаете, вам, вероятно, все равно придется ее изучить, и это идеальный проект для обучения. :)

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