摘要:(2010-08-11) C#.NET 序列化
自訂序列化類別
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace winmdo06 { //特徵描述Attribute Class [System.SerializableAttribute()] public class Employee { //Data Field private String _id; [System.Xml.Serialization.XmlAttribute()]public String Id { get { return _id; } set { _id = value; } } private String _name; public String Name { get { return _name; } set { _name = value; } } private Decimal _salary; public Decimal Salary { get { return _salary; } set { _salary = value; } } private DateTime _birthDate; [System.Xml.Serialization.XmlIgnoreAttribute()] public DateTime BirthDate { get { return _birthDate; } set { _birthDate = value; } } } }
主要程式碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace winmdo06 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //建構物件 Employee emp = new Employee() { Id = "0001", Name = "eric", BirthDate = new DateTime(2000, 1, 1), Salary = 50000 }; //寫出去???? 寫成XML //1建立串流 System.IO.Stream fs = new System.IO.FileStream(@"c:\emp.bin", System.IO.FileMode.Create, System.IO.FileAccess.Write); ////2.建立寫出器 //System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(fs, System.Text.Encoding.UTF8); ////縮排 //writer.Formatting = System.Xml.Formatting.Indented; ////設備 //System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(Employee)); //ser.Serialize(writer, emp); //writer.Flush(); //fs.Close(); //Binary 已有型別 常做如..授權等....使用者不易變更 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter ser = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); ser.Serialize(fs, emp); fs.Close(); } private void button2_Click(object sender, EventArgs e) { //1建立串流 System.IO.Stream fs = new System.IO.FileStream(@"c:\emp.xml", System.IO.FileMode.Open, System.IO.FileAccess.Read); //2.準備設定 System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(Employee)); Employee emp = (Employee)ser.Deserialize(fs); MessageBox.Show(emp.Name); } } }