1

(バイト配列への)カスタムシリアル化を実装していますが、循環参照の処理で問題が発生しました。

例:

Class A
  public MyBs as new List(of B)
End class

Class B
  public MyParent as A
  public MiscInt1 as integer
  public MiscInt2 as integer
End Class

Aをシリアル化するときは、Bの各インスタンスをシリアル化する必要があります。

ただし、Bをシリアル化するときに問題が発生します。

無限ループを発生させずにBの親を記録するにはどうすればよいですか?

アイデア:

BのインスタンスがAのインスタンスのシリアル化によってのみシリアル化されることがわかっている場合は、AのインスタンスからのMyParent参照のセットアップを処理でき、インスタンスのバイトバッファー内にその情報を記録することもできません。 Bの

これは完全に正しいとは言えませんが、最善の解決策かもしれません。

この状況を処理するためのよりクリーンな方法はありますか?

4

1 に答える 1

2

BCLの標準のBinaryFormatterと同様のアプローチを使用できます。循環参照の場合は、 ObjectIDGeneratorを利用し、オブジェクトの代わりに参照IDを格納します。

于 2010-08-03T08:11:03.293 に答える