.NET序列化格式器

20 篇文章 0 订阅
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">

格式器一个实现IFormatter接口的对象,IFormatter定义如下:

  1. Public interface IFormatter
  2. {
  3. /*其他方法*/
  4.         // 摘要:
  5.         //     反序列化所提供流中的数据并重新组成对象图形。
  6.         //
  7.         // 参数:
  8.         //   serializationStream:
  9.         //     包含要反序列化的数据的流。
  10.         //
  11.         // 返回结果:
  12.         //     反序列化的图形的顶级对象。
  13.         object Deserialize(Stream serializationStream);
  14.         //
  15.         // 摘要:
  16.         //     将对象或具有给定根的对象图形序列化为所提供的流。
  17.         //
  18.         // 参数:
  19.         //   serializationStream:
  20.         //     格式化程序在其中放置序列化数据的流。此流可以引用多种后备存储区(如文件、网络、内存等)。
  21.         //
  22.         //   graph:
  23.         //     要序列化的对象或对象图形的根。将自动序列化此根对象的所有子对象。
  24.     void Serialize(Stream serializationStream, object graph);
  25. }

IFormatter中的2个主要方法Serialize Deserialize ,他们分别用来执行实际的序列化和反序列化..NET中带有2个格式器,二进制的格式器(BinaryFormatter)SOAP格式器(SoapFormatter)


example:


用到的类

  1.     [Serializable]
  2.     public class testClass
  3.     {
  4.         public string UserName;
  5.         public string PassWord;

  6.     }
序列化和反序列化

  1.   //序列化
  2.         static void BinaryFormatterSerialize()
  3.         {
  4.             testClass myClass=new testClass();
  5.             myClass.UserName="test";
  6.             myClass.PassWord="000";
  7.             IFormatter formatter = new BinaryFormatter();
  8.            
  9.             //创建流对象
  10.             using(Stream stream=new FileStream(@"D:/test.bin",FileMode.Create,FileAccess.Write))
  11.             {
  12.                 //
  13.                 formatter.Serialize(stream, myClass);
  14.                 
  15.                 stream.Close();
  16.             }
  17.             Console.WriteLine("Serialize Successed");
  18.         }

  19.         //反序列化
  20.         static void BinaryFormatterDeserialize()
  21.         {  
  22.             

  23.             IFormatter formatter = new BinaryFormatter();
  24.             testClass myClass;

  25.             //创建流对象 打开二进制文件
  26.             using (Stream stream = new FileStream(@"D:/test.bin", FileMode.Open, FileAccess.Read))
  27.             {
  28.                 myClass = formatter.Deserialize(stream) as testClass;
  29.                 stream.Close();
  30.             }
  31.             Console.WriteLine("UserName:{0} -- PassWord:{1}", myClass.UserName, myClass.PassWord);
  32.         }
Soap格式器同理,操作基本一样.

ps.

BinaryFormatter 位于System.Runtime.Serialization.Formatters.Binary命名空间

SoapFormatter位于System.Runtime.Serialization.Formatters.Soap命名空间,需要引用system.runtime.serialization.formatters.soap.dll

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值