代码之家  ›  专栏  ›  技术社区  ›  Brian Webster Jason

vb.net-自定义序列化和循环引用,是否有干净的解决方案?

  •  1
  • Brian Webster Jason  · 技术社区  · 14 年前

    我正在实现一些自定义序列化(到字节数组),并且在处理循环引用时遇到了问题。

    例子:

    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的实例的字节缓冲区中记录该信息。

    这感觉不太对,但这可能是最好的解决方案。

    有没有更干净的方法来处理这种情况?

    1 回复  |  直到 13 年前
        1
  •  2
  •   desco    14 年前

    您可以使用类似于bcl中的标准二进制格式化程序的方法:利用 ObjectIDGenerator 如果是循环引用,则存储引用ID而不是对象