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 回答