最近项目开发中的传输数据是围绕Remoting而召开的,所以想把所有的数据实体都定义统一的格式,于是就写了一个基于DataTable的基类BaseModal,其他数据实体全部继承于它。此BaseModal基类还包括了一些其他的自有的属性,例如pageSize每页记录数、currentPage当前页码等等,代码如下:
结果发现数据在放序列化的时候出错,发现原来是没有加入序列化和反序列化构造函数,虽然BaseModal继承于DataTable,并且加入了[Serializable]树序列化属性,但是要实现想继承序列化,还是要加入构造函数,于是加入:
 1protected BaseModel(SerializationInfo info, StreamingContext context) : base(info, context)
13
14        public override void GetObjectData(SerializationInfo info, StreamingContext context)

结果编译,没有任何错误,但是类中的属性(pageSize等)值却获取不到,想了很久,发现其实道理跟前面有些类似,因为自己加入的属性根本就没有“告诉”序列化函数去处理,自然而然值就丢失了,于是修改函数如下:
 1protected BaseModel(SerializationInfo info, StreamingContext context) : base(info, context)
19
20        public override void GetObjectData(SerializationInfo info, StreamingContext context)

OK,一切搞定了
posted on 2006-08-29 15:10  blockhead  阅读(2434)  评论(1编辑  收藏  举报