シリアル化されたオブジェクト グラフのツリー/ビューを作成できる方法があるかどうか、また誰かがポインターを持っているかどうか疑問に思っています。編集目的は、何らかの理由で逆シリアル化の問題が発生した場合に、シリアル化されたデータに関するレポートを実際に表示/生成して、コードをデバッグする前に問題の原因を特定できるようにすることです。さらに、将来的にはこれを拡張して 2 つのストリーム (バージョン 1、バージョン 2) を取得し、2 つのストリームの違いを強調して、コードの変更中に興味深い情報を誤って削除しないようにしたいと考えています。/編集
従来は Soap または XML シリアライゼーションを使用してきましたが、これらは制限が強すぎてニーズが満たされなくなってきており、通常はバイナリ シリアライゼーションが必要なすべてを実行します。これが採用されなかった理由は、シリアル化されたコンテンツを表示してアップグレードの問題などを修正するのが非常に難しいためです。
そのため、シリアル化された情報に関するビューを作成することを検討し始めました。ISerializable コンストラクターからある程度までこれを行うことができます。
public A(SerializationInfo info, StreamingContext context)
{}
シリアル化情報があれば、m_data メンバーを反映して、実際のシリアル化されたコンテンツを確認できます。このアプローチの問題は、
- ツリーのブランチのみが表示されます。ルートからツリー全体を表示したいのですが、この位置からは実際にはできません。
- 情報を調べるのに便利な場所ではありません。ストリームをクラスに渡して、そこで作業を行いたいと思います。
ObjectManager クラスを見てきましたが、これは既存のオブジェクト グラフで動作しますが、データ ストリームから動作できるようにする必要があります。私は、ObjectReader と __BinaryParser を使用する BinaryFormatted を調べ、ObjectManager にフックします (これにより、コンテンツ全体がフラット リストに含まれることになると思います) が、これを複製するか、リフレクションを介してすべてを呼び出します (2これらの 3 つのクラスの内部) はかなりの作業のように思えるので、より良いアプローチがあるかどうか疑問に思っています。