序列化【译】

以下的是自己尝试翻译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);

 

 

 

posted @ 2014-03-20 15:24  Cathy Lee  阅读(187)  评论(0编辑  收藏  举报