一、名詞簡釋
在程式中產生的物件都是存在記憶體中,當程式終止後物件就會消失,如果我們想要永久保存這些物件就可以使用序列化,把物件存到檔案系統中,日後要再使用反序列化還原物件即可。除了保存之外,物件須傳送至網路或遠端服務但對方卻無法辨釋你所定義的類別時,可把物件序列化成Soap或Xml這種通用的格式來傳遞物件。
1.BinaryFormatter 物件序列化成二進位檔,從二進位檔還原回物件
2.XmlSerializer 物件序列化成Xml檔,從Xml檔還原回物件
3.SoapFormatter 物件序列化成Soap檔,從Soap檔還原回物件
二、程式範例
using System.IO; using System.Runtime.Serialization.Formatters.Binary; [Serializable] public class Person { public string Name { get; set; } public int Age { get; set; } public Person(){ Name = "Kobe"; Age = 30; } } class Program { static void Serialize() { Person p = new Person();//自訂義物件 FileStream fs = new FileStream(@"D:\BinaryFormatter.txt",FileMode.Create);//資料流物件 BinaryFormatter bf = new BinaryFormatter();//二進位格式序列化物件 bf.Serialize(fs, p);//序列化 fs.Flush(); fs.Close(); fs.Dispose(); } static Person Deserialize() { Person p; FileStream fs = new FileStream(@"D:\BinaryFormatter.txt", FileMode.Open); BinaryFormatter bf = new BinaryFormatter(); p = (Person)bf.Deserialize(fs);//反序列化 return p; } static void Main(string[] args) { Serialize(); Person p = Deserialize(); Console.Write("{0} is {1} years old",p.Name,p.Age); Console.ReadLine(); } }
沒有留言:
張貼留言