繁体   English   中英

对实例的序列化和反序列化做出反应

[英]Reacting on serialize and deserialize of an instance

我有一个正在序列化的课程。 我用[Serializable]注释了它,我正在使用二进制序列化程序。 一切正常。

但是后来我引入了无法序列化的新属性(可以说它们包含很多关于GUI的混乱,不需要重新记录)。 我可以基于类的其他属性来计算这些属性。

序列化时,我需要做两次-清理混乱并进入稳定状态以进行序列化。 反序列化-再次计算所有需要的属性。

我需要对正在被序列化/反序列化的“事件”实例做出反应。

但是我找不到这些事件,因为我没有实现接口ISerializable或抽象类Aserializable而仅实现了class Aserializable [Serializable]

我不知道何时对类进行序列化,因为这不是此类的问题。 它被序列化为另一个类的字段。

我有办法对这些事件做出反应吗?

您可以使用OnDeserializedAttribute及其相关属性(OnSerializing,OnSerialized,OnDeserializing)来创建在序列化/反序列化过程中调用的特殊方法。

通过实现ISerializable构建客户序列化 使用OnSerializingAttribute可以在序列化之前操作对象,使用OnDeserializingAttribute可以在反序列化之前进行操作。

您是否考虑过[XmlIgnoreAttribute]属性? 这将防止属性被序列化。 无需篡改序列化工作流程。

不好意思,我没意识到您要在反序列化时重新加载一些属性。 那么为什么不序列化这些呢? 在可选的subObject中,还是其他?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM