我可以避免向类添加额外的字段来存储仅用于反序列化/序列化的数据吗?
假设我有一些课程:
[Serializable]
class MyClass {
[NonSerialized]
NonSerializableDataType myField;
SomeOtherDataType serializableTemporaryData;
[OnSerializing]
OnSerializing (StreamingContext context) {
// build serializableTemporaryData from myField
}
[OnDeserialized]
void OnDeserialized (StreamingContext context) {
// build myField from serializableTemporaryData
}
}
有没有办法避免serializableTemporaryData
在每个对象中都有字段MyClass
?例如,我可以将其设为静态(可能通过更改我的 On... 方法)吗?
约束:我无法更改NonSerializableDataType
.
示例:假设 myField 包含资源句柄。然后,在序列化时,我必须存储一些反序列化后如何获取资源的信息,但我不能存储句柄本身。如果我将句柄包装到另一个类中,那么我只是将问题转移到了包装类——然后我会为包装类提出同样的问题。