序列化不可序列化的自定义外部类

时间:2014-04-23 13:05:38

标签: c# serialization

我想知道是否有可能序列化主题中描述的类。

假设我们有一个共享为二进制DLL文件的人的库。此外,此lib的创建者创建了一个不是Serializable的类。如何序列化这样的类?我知道我可以创建一个包含所有可以序列化的特性的双胞胎。但是还有其他更简单的解决方案吗?如何序列化“不属于你”并仅存储为二进制的类?

1 个答案:

答案 0 :(得分:2)

第三方课程是一个实施细节;坦率地说,在序列化中使用它是一个非常糟糕的主意,因为你完全被限制在一个角落里,并且永远不能改变实现。您还将面临版本问题的重大风险 - BinaryFormatter根本无法妥善处理。

可能不是您想要听到的内容,但我提供了两条建议:

  1. 不要序列化实施细节;序列化数据(仅限);这可能确实需要你编写一个反映实现的DTO,但这通常是一项微不足道的工作
  2. 确保您了解BinaryFormatter的含义;坦率地说,我从不推荐它 - 它有......故障。
  3. 至于解决方法:你可以调查序列化代理,但在BinaryFormatter内做这件事并不简单,基本上只是第一个子弹的重新声明

    如果是我(虽然我非常偏颇),我会改变序列化器; protobuf-net(披露:我作为作者)作为二进制序列化程序工作,如果第三方模型已经耦合到您的模型,则对代理人提供易于实现的支持。