c# 串行【序列化】和解串【反序列化】


C#   串行【序列化】和解串【反序列化】

一. 什么是序列化和反序列话呢?

       相信我们做程序的都会遇到这种情况,需要将C#中某一个结构很复杂的类的对象存储起来,或者通过网路传输到远程的客户端程序中去, 这时候用文件方式或者数据库方式存储或者传送就比较麻烦了,这个时候,最好的办法就是使用串行和解串。其实串行就是我们所说的序列化【Serialization】,而解串就是反序列化序列化Deserialization。

二.序列化有那几种:

BinaryFormatter

SoapFormatter

XmlSerializer

三.示例:

1.使用BinaryFormatter序列化和反序列化;

程序集:     System.Runtime.Serialization.Formatters.Binary.dll

命名空间:  System.Runtime.Serialization.Formatters.Binary

  序列化:

FileStream fs = new FileStream("SerializedDate.data", FileMode.Create);
BinaryFormatter bf = New BinaryFormatter();
MyClass mc = new MyClass();
bf.Serialize(fs, mc);
fs.Close();

反序列化:

FileStream fs = new FileStream("SerializedDate.data", FileMode.Open);
BinaryFormatter bf = New BinaryFormatter();
MyClass mc = new MyClass(); 

mc = (MyClass)bf.Deserialize(fs);
fs.Close();

注意:

序列化的对象必须是具有【Serializable】标记的;即:MyClass类必须加【Serializable】标记;

bf.Serialize(fs, mc);//序列号

bf.Deserialize(fs); //反序列化

参考地址:http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.formatters.binary.binaryformatter(v=VS.80).aspx

2.使用SoapFormatter序列化和反序列化;

程序集:     System.Runtime.Serialization.Formatters.Soap.dll

命名空间:  System.Runtime.Serialization.Formatters.Soap 

参考地址: http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.formatters.soap.soapformatter(v=vs.110).aspx

3.使用XmlSerializer序列化和反序列化;

程序集:     System.Xml.dll;

命名空间:  using System.Xml.Serialization;

参考地址:http://msdn.microsoft.com/zh-cn/library/system.xml.serialization.xmlserializer(v=vs.80).aspx

原文地址:https://www.cnblogs.com/zlp520/p/4165384.html