1

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

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

我听说过针对包含类枚举对象的每种类型执行此操作的方法,但我宁愿这样做,以便任何包含类枚举对象的类都会通过查看类枚举类型的现有对象来自动反序列化它.

(为什么我想要这个,以防万一

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

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

4

1 回答 1

1

你会用ISerializationSurrogate.

有关一些示例代码,请参见此处

更新

SymbolId就我而言,我需要为和bool值类型重新使用现有(盒装)实例。

于 2011-07-19T11:57:25.057 回答