序列化类enum对象
本文关键字:对象 enum 序列化 | 更新日期: 2023-09-27 18:02:26
我使用二进制序列化(使用BinaryFormatter等)来序列化对象图。在这些对象中,有些对象具有与枚举类似的特定类型的字段,只是具有额外的属性和方法。
每次反序列化这个类enum对象时,都会创建该类型的新实例的问题。是否有某种特殊的反序列化方法允许您返回一组现有对象中的一个,而不是创建一个全新的对象?
我听说过对每个包含类enum对象的类型执行此操作的方法,但我宁愿这样做,以便任何包含类enum对象的类都可以通过查找类enum类型的现有对象来自动反序列化它。
为什么我想要这个,在它重要的情况下
-
相等变得更容易,我可以使用默认的引用比较操作符,而不必重写Equals, GetHashCode, ==和!=并实现IEquatable。
-
类枚举对象中的一些数据可能会改变,我希望序列化的数据可以更新为新的数据,而不需要大量的代码。(请注意,在类enum对象中有一个字段永远不会改变。))
对于ISerializationSurrogate
,您可以这样做。
参见这里的一些示例代码。
在我的例子中,我需要为SymbolId
和bool
值类型重用现有的(盒装)实例。