2

序列化问题仍在继续......

我正在尝试序列化一个类,其中的实例在它们之间共享公共对象(各种活页夹)。因此,对象 A、B、C 共享对象 Binder1,对象 D 和 E - Binder2,依此类推……我正在序列化对象 A、B、C、D、E。通常,这个 binder 对象是在构造函数中传递的 - 但不是通过序列化程序,因为它需要一个无参数的构造函数。

ISeriazable 似乎有一些适用于单例的东西 -IObjectReference接口,该方法GetRealObject可用于返回对新创建的单例的引用。但是,它看起来并不XmlSerializer关心这个接口。

那么,我应该如何序列化/反序列化这些对象呢?

编辑:我几乎准备放弃这个问题,因为我刚刚发现这个问题在2006 年(!!)两个巨头 @JonSkeet 和 @MarcGravell 之间的论坛上讨论过,XmlSerializer 的答案基本上是否定的。我会把这个问题留得更久一点,以防过去 7 年发生了变化。

4

1 回答 1

0

我还没有找到使用 XmlSerializer 本地执行此操作的方法。我确实在 Jon Skeet 和 Marc Gravell 之间找到了一个旧线程,它基本上说你不能像使用 ISerializable 和 IObjectReference 那样做这件事。

我必须完成这项工作的方式如下:

  • 给Binder对象添加Guid字段(即多个对象共享的公共对象)
  • 在反序列化期间,使用静态 Dictionary 并使用具有相同 Guid 的已注册 Binder 对象,或者将新的 Binder 对象添加到静态字典以供其他人链接。
于 2013-07-16T14:20:31.240 回答