序列化类enum对象

本文关键字:对象 enum 序列化 | 更新日期: 2023-09-27 18:02:26

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

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

我听说过对每个包含类enum对象的类型执行此操作的方法,但我宁愿这样做,以便任何包含类enum对象的类都可以通过查找类enum类型的现有对象来自动反序列化它。

为什么我想要这个,在它重要的情况下

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

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

序列化类enum对象

对于ISerializationSurrogate,您可以这样做。

参见这里的一些示例代码。

在我的例子中,我需要为SymbolIdbool值类型重用现有的(盒装)实例。