Мне интересно, есть ли способ, которым я могу создать дерево / представление сериализованного графа объектов, и есть ли у кого-нибудь указатели? РЕДАКТИРОВАТЬ Цель состоит в том, чтобы по какой-то причине мы столкнулись с проблемой десериализации, чтобы мы могли на самом деле просмотреть / создать отчет по сериализованным данным, чтобы помочь нам определить причину проблемы, прежде чем отлаживатькод.Кроме того, я хочу расширить это в будущем, чтобы взять два потока (версия 1, версия 2) и выделить различия между ними, чтобы избежать случайного удаления интересной информации во время изменений кода. / EDIT
Традиционно мы использовали сериализацию Soap или XML, но они становятся слишком ограниченными для наших нужд, и двоичная сериализация обычно делает все, что нам нужно.Причина, по которой это не было принято, состоит в том, что намного труднее просматривать сериализованное содержимое, чтобы помочь решить проблемы обновления и т. Д.
Так что я начал пытаться создать представление для сериализованной информации.Я могу сделать это из конструктора ISerializable в определенной степени:
public A(SerializationInfo info, StreamingContext context)
{}
Учитывая информацию о сериализации, я могу отразить член m_data и увидеть фактическое сериализованное содержимое.Проблема с этим подходом заключается в том, что
- Он будет отображать только ветку дерева, я хочу отобразить все дерево от корня, и на самом деле это невозможно сделать с этой позиции.
- Это не удобное место для запроса информации, я хотел бы передать поток в класс и выполнить там работу.
Я видел класс ObjectManager, но он работает насуществующий граф объектов, тогда как мне нужно уметь работать с потоком данных.Я просмотрел BinaryFormatted, который использует ObjectReader и __BinaryParser, подключая ObjectManager (который, я думаю, будет иметь все содержимое, возможно, в виде плоского списка), но для репликации этого или вызова всего через отражение (2из этих 3 классов являются внутренними) кажется довольно большой работой, поэтому мне интересно, есть ли лучший подход.