序列化类似枚举的对象

时间:2011-07-19 11:44:06

标签: c# binary-serialization

我正在使用二进制序列化(使用BinaryFormatter等)来序列化对象图。在这些对象中,有些具有与枚举类似的特定类型的字段,除了具有其他属性和方法。

每次这个类似枚举的对象被反序列化时,都会创建一个新的类型实例。是否有某种特殊的反序列化方法允许您返回一组现有对象,而不是创建一个全新的对象?

我已经听说过每个包含类似enum的对象的类型的方法,但我宁愿这样做,以便任何包含枚举对象的类将通过查看枚举的现有对象自动反序列化它类似的。

(为什么我要这个,如果重要

  1. 平等变得更容易,我可以使用默认的引用比较运算符,而不必重写Equals,GetHashCode,==和!=并实现IEquatable。

  2. 枚举对象中的某些数据可能会发生变化,我希望序列化数据在没有大量代码的情况下更新为新数据。 (请注意,类似于枚举的对象中有一个永远不会改变的字段。))

1 个答案:

答案 0 :(得分:1)

您可以使用ISerializationSurrogate执行此操作。

有关示例代码,请参阅here

<强>更新

就我而言,我需要为SymbolIdbool值类型重用现有(盒装)实例。