序列化【译】
以下的是自己尝试翻译MSDN的文章
原文:http://msdn.microsoft.com/en-us/library/7ay27kt9(v=vs.110).aspx
序列化是把对象转化为成一种可以保存和传输的过程,它的反过程就是反序列化,反序列化死指把数据流转化为对象的过程。这两个过程使得数据的存储和传输变得很方便。
.NET Framework 有两种序列化的技术:
- 二进制序列化可以保留类型,在不同的应用之间保存对象。比如,你可以用二进制序列化的方法把对象序列化并保存在剪切板上。你可以把对象序列化成数据流 保存在硬盘,内存,然后通过网络传输,把数据传到另一个电脑,应用或者域。
- XML 序列化只会序列化公共的属性和成员,并且不会保留类型。XML 是一种公用标准形式。XML 数列化对web间共用数据是一个不错的选择。比如:SOAP。
引用
System.Runtime.Serialization:用来序列化对象
System.Xml.Serialization: 用来把对象序列化成XML数据流或者文件
怎么序列化对象
首先需要建立一个对象并且设置它的公共属性和成员,接下来你必须定义需要传输的格式,是数据流还是文件。
public class test { public string name; public int age; private double money; public test() { name = "Cathy"; age = 24; money = 10000.00; } } test Cathy = new test(); XmlSerializer mySerializer = new XmlSerializer(typeof(test)); StreamWriter myWriter = new StreamWriter("myFileName.xml"); mySerializer.Serialize(myWriter, Cathy); myWriter.Close();
生成的XML文件如下:
<?xml version="1.0" encoding="utf-8" ?> - <test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <name>Cathy</name> <age>24</age> </test>
怎么反序列化对象
当你反序列化一个对象时,传输格式决定你是建数据流还是文件。
test Cathy; XmlSerializer mySerializer = new XmlSerializer(typeof(test)); FileStream myFileStream = new FileStream("myFileName.xml", FileMode.Open); Cathy = (test)mySerializer.Deserialize(myFileStream);