在VS2003中用BinaryFormater来序列化一个对象时会有这样的情况存在。从一时期版本的已序列化对象进行对象创建时会因字段的增加而出现异常。通过查阅MSDN可以得知通过自定义序列化处理。
在将对象序列化之前,最好先做下面的事情,将聚合的对象尽量置空(null)否则序列化后的结果可能会很大!将事件置空!否则序列化过程中要求事件订阅者的元数据(即元数据也要序列化)。
在VS2003中序列化从CollectionBase继承的类时会产生问题,解决的办法是实现其索引器方法。
对多维数组直接进行XML序列化时也会出现问题,解决的办法是将其转换为数组的数组。
下面是自定义序列化的实现方法:(2005 VS.net 已经提供了类似的功能,不需要现这样做了:))


































































[Serializable()]
public class ProjectOptions : ISerializable
{
// 成员声明
\ …
// 下面这一行是必须的,即使没有内容也要有一个构造函数
public ProjectOptions() {}
#region ISerializable 成员
public ProjectOptions(SerializationInfo info, StreamingContext context)
{
Serialize.DeSerialize(info,context,this);
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
Serialize.DoSerialize(info,context,this);
}
#endregion
}
public class ProjectOptions : ISerializable
{
// 成员声明
\ …
// 下面这一行是必须的,即使没有内容也要有一个构造函数
public ProjectOptions() {}
#region ISerializable 成员
public ProjectOptions(SerializationInfo info, StreamingContext context)
{
Serialize.DeSerialize(info,context,this);
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
Serialize.DoSerialize(info,context,this);
}
#endregion
}