日期:2014-05-18  浏览次数:20990 次

求救,Region反序列化出错
代码如下:
SerializableRegion RDStore = new SerializableRegion(this.Region); 
Stream sw = File.Create(@"C:\FormMap.bin"); 
bf.Serialize(sw, RDStore); //到此,成功生成文件保存了序列化数据
sw.Seek(0, SeekOrigin.Begin); 
RDStore = (SerializableRegion)bf.Deserialize(sw);//这一行出错,提示:未将对象引用设置到对象的实例 
sw.Close(); 
注:SerializableRegion 是一个复杂类. 
不知道要怎么解决?我是照着书做的,很奇怪会出错...新手,请多多指教.

------解决方案--------------------
关键是在VS2005中RegionData的构造方法是私有的,不能访问
捣腾一下:
C# code
protected SerializableRegion(SerializationInfo info, StreamingContext context) 
{
  if (info == null)
    throw new System.ArgumentNullException("info");
 
  Region r = new Region();
  RegionData d = r.GetRegionData();
  d.Data = (byte[])info.GetValue("Data", typeof(byte[]));
  this._region = new Region(d);
  r.Dispose();
}