我有一些序列化的对象 [编辑:使用BinaryFormatter] 这样
Obj_A 1
Obj_A 2
Obj_A 3
Obj_B 1
Obj_B 2
Obj_B 3
Obj_B 4
用户在运行时决定B之前有多少个A对象。
在反序列化时,我无法猜测何时将形式Obj_A deseriliazing切换为Obj_B
我欢迎任何相关见解
编辑:序列化发生在流程上,A和B的数量事先不知道
ANSWER
Marc Gravell提出了一些我不知道的事情:
为什么要打扰?然后让格式化程序完成工作并测试类型
(我很惊讶我这里的人并没有大声回答,显而易见......)
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("X:\\binary.dump", FileMode.Open);
object o = formatter.Deserialize(stream);
if (o.GetType() == typeof(Obj_A))
ReadTheMSDN(Obj_A);
else if (o.GetType() == typeof(Obj_B))
KnowObjectsYouHandle(Obj_B);
stream.Close();
另一个不太优雅的解决方案是强制对象列表:
LIST Obj_A
Obj_A 1
Obj_A 2
Obj_A 3
LIST Obj_B
Obj_B 1
Obj_B 2
Obj_B 3
Obj_B 4
答案 0 :(得分:2)
您使用的序列号是什么?各种选择