代码之家  ›  专栏  ›  技术社区  ›  Stefan Monov

可查看私有数据、具有可解析输出、支持泛型集合和支持自定义序列化的序列化程序

  •  0
  • Stefan Monov  · 技术社区  · 15 年前

    1. 不应该跳过私人数据
    2. 应该支持泛型集合(不需要很容易,但应该是可能的)

    我需要(2)为我精心设计的版本容差方案,(4)因为我需要为需要序列化的大型对象(数组)实现自定义优化的序列化。




    DataContractSerializer失败(4)AFAIK。
    NetDataContractSerializer似乎失败了(2),因为我读到它不“互操作”(尽管它确实使用XML??)
    Protobuf net失败(2)。

    你能推荐一个序列化程序吗?
    也: 请给我一个互操作性的例子。

    注意:所有这些序列化程序都以某种方式支持版本容差,但我需要更高级的版本容差特性。看到了吗 this question of mine

    原来DataContractSerializer和NetDataContractSerializer都支持(2)和(4),所以我的问题就解决了。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Dan Puzey    15 年前

    我认为您不需要自定义序列化程序,我认为您需要在类中使用自定义序列化方法。

    例如:如果您使用 XmlSerializer IXmlSerializable 并手动实现方法,这些方法可以覆盖任何版本的组合、私有或公共数据或其他任何内容。同样 ISerializable 如果使用二进制序列化,则可用于自定义行为。

    public class FooList : List<Foo>, IXmlSerializable
    

    public class CustomSerializableList<T> : List<T>, IXmlSerializable where T : IXmlSerializable
    

    ... 这会给你一个通用列表,其内容保证是 IXML可序列化 ,这意味着 因为这个清单本身很简单。

    推荐文章