rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">
序列化和反序列化
Soap格式器同理,操作基本一样.
格式器一个实现IFormatter接口的对象,IFormatter定义如下:
- Public interface IFormatter
- {
- /*其他方法*/
- // 摘要:
- // 反序列化所提供流中的数据并重新组成对象图形。
- //
- // 参数:
- // serializationStream:
- // 包含要反序列化的数据的流。
- //
- // 返回结果:
- // 反序列化的图形的顶级对象。
- object Deserialize(Stream serializationStream);
- //
- // 摘要:
- // 将对象或具有给定根的对象图形序列化为所提供的流。
- //
- // 参数:
- // serializationStream:
- // 格式化程序在其中放置序列化数据的流。此流可以引用多种后备存储区(如文件、网络、内存等)。
- //
- // graph:
- // 要序列化的对象或对象图形的根。将自动序列化此根对象的所有子对象。
- void Serialize(Stream serializationStream, object graph);
- }
IFormatter中的2个主要方法Serialize 和 Deserialize ,他们分别用来执行实际的序列化和反序列化.在.NET中带有2个格式器,二进制的格式器(BinaryFormatter)和SOAP格式器(SoapFormatter)
example:
用到的类
- [Serializable]
- public class testClass
- {
- public string UserName;
- public string PassWord;
- }
- //序列化
- static void BinaryFormatterSerialize()
- {
- testClass myClass=new testClass();
- myClass.UserName="test";
- myClass.PassWord="000";
- IFormatter formatter = new BinaryFormatter();
- //创建流对象
- using(Stream stream=new FileStream(@"D:/test.bin",FileMode.Create,FileAccess.Write))
- {
- //
- formatter.Serialize(stream, myClass);
- stream.Close();
- }
- Console.WriteLine("Serialize Successed");
- }
- //反序列化
- static void BinaryFormatterDeserialize()
- {
- IFormatter formatter = new BinaryFormatter();
- testClass myClass;
- //创建流对象 打开二进制文件
- using (Stream stream = new FileStream(@"D:/test.bin", FileMode.Open, FileAccess.Read))
- {
- myClass = formatter.Deserialize(stream) as testClass;
- stream.Close();
- }
- Console.WriteLine("UserName:{0} -- PassWord:{1}", myClass.UserName, myClass.PassWord);
- }
ps.
BinaryFormatter 位于System.Runtime.Serialization.Formatters.Binary命名空间
SoapFormatter位于System.Runtime.Serialization.Formatters.Soap命名空间,需要引用system.runtime.serialization.formatters.soap.dll