在C#中实现我们自己的序列化程序 - 提示和陷阱

时间:2010-08-11 21:32:53

标签: c# serialization bit-manipulation

我们可能需要为我们(大型)C#应用程序中的类编写自己的序列化程序 - BinarySerializer太慢且冗长,而protobuf-net存在基于接口的属性(我们有负载)的问题。

有没有人有任何好的提示和/或警告?我怀疑我们应该使用BinaryWriterBinaryReader,但是我们还没有在C#中做过多点小事,任何陷阱都会受到赞赏!

同样,有没有人知道带有我可以查看的源代码的手动序列化器?

2 个答案:

答案 0 :(得分:3)

提示/警告?它可以是严重的数量的代码。我建议编写一些简单的代码会更容易,这些代码会将您现有的模型转换为一个简单的DTO,可以通过选择现有的序列化API轻松地进行序列化。拥有DTO层(与域实体分开)也可以实现更简单的维护 - 您可以在不破坏序列化数据的情况下重构域实体。

自己做的选择(记住你强调模型相当复杂,你不是小提琴手):

  • 手动编写特定类型的序列化;非常容易出错,非常费力
  • 写一个通用的图书馆;解决所有边缘案件的疯狂工作量

之后你已经找到了一个可以强大,可扩展地工作的序列化格式,并支持你需要的场景(继承等)。

答案 1 :(得分:0)

考虑Type Convertors。我们在ViewState中广泛使用它们,它们运行良好。