我需要(2)为我精心设计的版本容差方案,(4)因为我需要为需要序列化的大型对象(数组)实现自定义优化的序列化。
DataContractSerializer失败(4)AFAIK。 NetDataContractSerializer似乎失败了(2),因为我读到它不“互操作”(尽管它确实使用XML??) Protobuf net失败(2)。
你能推荐一个序列化程序吗? 也: 请给我一个互操作性的例子。
注意:所有这些序列化程序都以某种方式支持版本容差,但我需要更高级的版本容差特性。看到了吗 this question of mine
原来DataContractSerializer和NetDataContractSerializer都支持(2)和(4),所以我的问题就解决了。
我认为您不需要自定义序列化程序,我认为您需要在类中使用自定义序列化方法。
例如:如果您使用 XmlSerializer IXmlSerializable 并手动实现方法,这些方法可以覆盖任何版本的组合、私有或公共数据或其他任何内容。同样 ISerializable 如果使用二进制序列化,则可用于自定义行为。
XmlSerializer
IXmlSerializable
ISerializable
public class FooList : List<Foo>, IXmlSerializable
public class CustomSerializableList<T> : List<T>, IXmlSerializable where T : IXmlSerializable
... 这会给你一个通用列表,其内容保证是 IXML可序列化 ,这意味着 因为这个清单本身很简单。
IXML可序列化