快速业务通道

.Net实体类序列化方法--为什么要序列化?

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-12
 对于对象的反序列化,则如下:
  MEABlock myBlock;
  // Constructs an instance of the XmlSerializer with the type
  // of object that is being deserialized.
  XmlSerializer mySerializer = new XmlSerializer(typeof(MEABlock));
  // To read the file, creates a FileStream.
  FileStream myFileStream = new FileStream("myFileName.xml", FileMode.Open);
  // Calls the Deserialize method and casts to the object type.
  myBlock = (MEABlock)mySerializer.Deserialize(myFileStream)


  b. 二进制序列化
  与XML序列化不同的是,二进制序列化可以将类的实例中所有字段(包括私有和公有)都进行序列化操作。这就更方便、更准确的还原了对象的副本。
  要实现上述类的实例的序列化,可参照如下例子:
  MEABlock myBlock = new MEABlock();
  // Insert code to set properties and fields of the object.
  IFormatter formatter = new BinaryFormatter();
  Stream stream = new FileStream("MyFile.bin",FileMode.Create,FileAccess.Write, FileShare.None);
  formatter.Serialize(stream, myBlock);
  stream.Close();
  对于对象的反序列化,则如下:
  IFormatter formatter = new BinaryFormatter();
  Stream stream = new FileStream("MyFile.bin", FileMode.Open,FileAccess.Read, FileShare.Read);
  MEABlock myBlock = (MEABlock) formatter.Deserialize(stream);
  stream.Close();


  4、如何变相实现自定义可视化控件的序列化、反序列化
  对于WinForm中自定义控件,由于继承于System.Windows.Form类,而Form类又是从MarshalByRefObject继承的,窗体本身无法做到序列化,窗体的实现基于Win32下GUI资源,不能脱离当前上下文存在。
  当然可以采用变通的方法实现控件的序列化。这里采用的是记忆类模型。
  定义记忆类(其实就是一个可序列化的实体类)用于记录控件的有效属性,需要序列化控件的时候,只需要将该控件的实例Copy到记忆类,演变成序列化保存该记忆类的操作。
  反序列化是一个逆过程。将数据流反序列化成为该记忆类,再根据该记忆类的属性生成控件实例。而对于控件的一些事件、方法则可以继续使用。
  wwf之所以强调要把类实例化,就是因为工作流和应用程序是在不同的线程中。二者之间需要用类作为传递数据的载体的话,就需要把该类定义为public序列化为二进制传输。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号