【问题标题】:I need a special serializer (C#)我需要一个特殊的序列化程序(C#)
【发布时间】:2010-01-27 09:51:37
【问题描述】:

我正在寻找符合我要求的序列化程序, 序列化器可以在 .Net 框架、Open-Sorce 或付费产品中(只要它可以直接从代码中使用)。

现在,我的要求是:

强制

  • 能够处理循环引用。
  • 自动,在目标类中使用属​​性或继承,然后简单地写入文件。
  • 正向过滤,这意味着在目标类中,字段被标记为 to 序列化的内容,而不是不序列化的内容(如 DataContractSerializer 中的 [DataMember] 而不是 XmlSerializer 中的 [XmlIgnore]) .
  • 必须使用默认构造函数。
  • 支持多态性(DataContractSerializer 中没有“KnownTypes”之类的东西)。

首选

  • 尽可能轻松地生成文件。
  • 尽可能快地进行序列化。
  • 在非公共领域工作。

我检查了大多数 .Net 序列化程序并尝试在网上查找更多内容,但结果很短, 所有这些要么不支持循环引用、多态性,要么不使用任何构造函数。 所以现在我有点想不通了,我会很高兴停下来。

谢谢!

【问题讨论】:

  • .NET 二进制格式化程序按照 Darin 的回答处理其中的大部分。如果你测试过 BinaryFormatter,你发现它有什么样的缺点?

标签: c# .net serialization


【解决方案1】:

BCL 中最接近的是BinaryFormatter,但它不可互操作。

【讨论】:

  • 不可互操作是什么意思?
  • @leppie,不可互操作我的意思是这种格式不能被 .NET 以外的语言/平台理解。
【解决方案2】:

我会查看 Google 的 Protocol Buffers 它们可用于多种语言 C++、Java、Python 和 .NET C#。

【讨论】:

    【解决方案3】:

    BinaryFormatter 的问题在于它是负过滤(将 fildes 标记为不序列化)并且它不使用构造器。 关于 google Protocol Buffers(或 ProtoBuff)我有机会使用它,它非常复杂,几乎不能称为自动

    【讨论】:

      猜你喜欢
      • 2016-12-20
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多