最近在写一个类似于excel的表格控件,在处理导入导出时使用了序列化的方法,将部份碰到的问题略做整理。
1.本打算将整个控件实现Serializable特性,以实现整个控件的序列化,测试发现Control控件未实现Serializable特性(惭愧呀)
2.只好将控件再整理出一个实体类出来,做为控件中的一个字段来处理了,这个实体类再实现Serializable特性
3.集合类的反序列化,本以为反序列化会执行Add 之类的方法(打算在Add方法中对集合中的子类做一些处理),经测试发现俺又悲剧了,无奈之下想到了[OnDeserialized()]这个特性
[OnDeserialized()]
private void OnDeserializedHandler(StreamingContext context)
{
if (this.Count > 0)
this._currentRow = this[0];
foreach (GridRow row in this)
row.Owner = this;
}