思路话语

。Arlen:思想有多远你就能走多远...

序列化业务对象

呼~终于把分页控件做好了。满心欢喜打算把它用在以前的一个系统中。
该系统是基于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,成功解决问题。

posted on 2006-04-13 15:14  Arlen  阅读(256)  评论(0编辑  收藏  举报

导航