序列化业务对象
呼~终于把分页控件做好了。满心欢喜打算把它用在以前的一个系统中。
该系统是基于Castle的ar开发的。
由于我的分页控件需要将表现控件的DataSource往ViewState里存,而我写的domain对象竟然不能序列化,提示错误如下:
类型“***”必须标记为 Serializable 或者具有 ReferenceConverter 以外的TypeConverter,才能被放置在视图状态中。
到网上找了些文章看了一下,自己再试验改进之后,在业务对象中作如下处理就成功解决问题了:
1.加上namespace:
using System.Runtime.Serialization;
2.在类名前加上[Serializable]
3.让类继承ISerializable
4.给类加上构造函数:
protected Users(SerializationInfo info,StreamingContext context)
{
Id = info.GetString("Id");
Name = info.GetString("Name");
CreateDate = info.GetDateTime("CreateDate");
}
5.实现ISerializable:
public void GetObjectData(System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
{
info.AddValue("Id",Id);
info.AddValue("Name",Name);
info.AddValue("CreateDate",CreateDate);
}
这些Id,Name,CreateDate是什么?是Users类的属性啊。
OK,成功解决问题。