XmlSerialization与单身
序列化的困境继续 ……
我正在尝试序列化一个类,这些类的实例在它们之间共享公共对象(各种类型的绑定器)。 因此,对象A,B,C共享对象Binder1,对象D和E – Binder2等等……我正在序列化对象A,B,C,D,E。 通常,此绑定器对象在构造函数中传递 – 而不是使用序列化程序,因为它需要无参数构造函数。
ISeriazable似乎有一些适用于单例的东西 – IObjectReference
接口,其中方法GetRealObject
可用于返回对新创建的单例的引用。 但是,它看起来不像XmlSerializer
关心这个接口。
那么,我应该如何序列化/反序列化这些对象呢?
编辑 :我几乎已经准备好放弃这个问题,因为我刚刚在两个巨头@JonSkeet和@MarcGravell之间的2006年(!!) 论坛上发现了这个问题 ,其中XmlSerializer的答案基本上没有 。 为了防止过去7年的情况发生变化,我会将此问题保持更长时间。
我还没有找到一种方法来使用XmlSerializer本地执行此操作。 我确实在Jon Skeet和Marc Gravell之间找到了一个旧线程 ,基本上说你不能用与ISerializable和IObjectReference相同的方式做到这一点。
我必须完成这项工作的方式如下:
- 将Guid字段添加到Binder对象(即多个对象共享的公共对象)
- 在反序列化期间,使用静态字典并使用已注册的Binder对象和相同的Guid,或者将新的Binder对象添加到静态字典中以供其他人链接。
- CamelCasePropertyNamesContractResolver在MapHttpRoute之后无法正常工作
- 当我使用List 时,我在Jetbrains dotMemory中看到的这个“pinning handle object ”是什么?
- 在C#中获取上周/下周的星期三日期
- WPF如何在实际折叠时设置DataGrid.Group标头文本
- 将google idToken替换为本地openId令牌c#
- 在System.Web.Routing中为MVC应用程序模拟RouteData类
- 通过Cruise Control发布MVC v1 C#应用程序
- 拳击和拆箱:什么时候出现?
- 使用protobuf-net,是否可以在不分配内存的情况下反序列化消息?