Tho*_*enz 5 .net c# serialization binaryformatter
假设我有classA,其中包含classB,两者都是[Serializable].
我假设,在反序列化中,classB将首先被反序列化.
但事实并非如此,因为我可以通过记录每个[OnDeserialized]方法被击中来确认.
现在我有以下问题:
在classA的反序列化完成后,它应该使用classB中的值进行自我设置.不幸的是,此时尚未对classB进行反序列化,因此classA设置错误.
我的问题将得到解决,如果我可以强制BinaryFormatter在classA之前反序列化classB,或者将对象图从底部到顶部而不是从上到下解析.
另一个明显的解决方案是让classB在反序列化时激活一个事件然后让classA自行设置,但我想远离这个非优雅的解决方法.
如果有人知道更好的解决方案,我将不胜感激.
如果您必须明确控制对象序列化和反序列化的顺序,我建议您实现ISerializableA 的接口:
public class ClassA : ISerializable
{
private ClassB _dependency;
public ClassA(SerializationInfo information, StreamingContext context)
{
_dependency
= (ClassB)information.GetValue("_dependency", typeof(ClassB));
// TODO: Get other values from the serialization info.
// TODO: Set up stuff from dependent object.
}
public SerializationInfo GetObjectData()
{
information.AddValue("_dependency", _dependency, typeof(ClassB));
// TODO: Add other fields to the serialization info.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1945 次 |
| 最近记录: |