BinaryFormatter反序列化Dictionary问题.

慧眼识狗熊 2015-04-07 02:43:50

[Serializable]
public class Model
{
Dictionary<string,int> dic;
List<string> lst;
public Model()
{
dic = new Dictionary<string,int>();
lst = new List<string>();
dic.Add("1",1);
lst.Add("2");
}

[OnDeserialized]
void OnDeser(StreamingContext sc)
{
//在这里dic的count为空,list的数量是有的

}
}


对这个实例对象进行序列化后,再反序列化。
在OnDeserialized事件里,dic的内容是空的。
但是在binaryformat.Deserialize(mem)执行完后,这个对象里的dic里的count就有数据了。

谁知道为什么在反序列化后事件中,dictionary对象是空的?
(因为涉及到版本升级,所以需要在OnDeserialized事件中做)
...全文
199 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
慧眼识狗熊 2015-04-07
  • 打赏
  • 举报
回复
引用 2 楼 feiyun0112 的回复:
void OnDeser(StreamingContext sc) { this.dic.OnDeserialization(sc); }
会不会有重复反序列化的问题? 因为就算我不调用,最后数据也还是有的。
慧眼识狗熊 2015-04-07
  • 打赏
  • 举报
回复
引用 2 楼 feiyun0112 的回复:
void OnDeser(StreamingContext sc) { this.dic.OnDeserialization(sc); }
解决了,为什么dictionary要显示调用才行?
feiyun0112 2015-04-07
  • 打赏
  • 举报
回复
void OnDeser(StreamingContext sc)
{
this.dic.OnDeserialization(sc);
}
  • 打赏
  • 举报
回复
不懂,我只知道在WCF,WS中,Dictionary都是特殊处理的…… 因为KeyValuePair<TKey, TValue>这东西的Key和Value是只读的

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧