閱讀96 返回首頁    go 外匯


序列化和反序列化

序列化是將對象狀態轉換為可保持或傳輸的格式的過程,例如可以將一個對象序列化後使用Http通過Internet在客戶端和服務器之間傳輸該對象;
反序列化將流轉換為對象;
.NET框架提供的序列化方式:二進製序列化、XML序列化;
代碼演示:(1)二進製序列化
用到的命名空間:
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
①自定義一個類,MyObject.cs
[Serializable] //指明這個類可以被序列化 public class MyObject { public MyObject() { } public int n1 = 0; public int n2 = 0; public string str = null; public double Add(double a, double b) { return a+b; } }
2.二進製序列化對象:
protected void Button1_Click(object sender, EventArgs e) { MyObject my = new MyObject(); my.n1 = 1; my.n2 = 2; my.str = "hello"; IFormatter ifm = new BinaryFormatter(); Stream strm = new FileStream(Server .MapPath(@"my.xs"),FileMode .Create , FileAccess.Write ,FileShare.None );//保存為自己想要的文本格式 ifm.Serialize(strm, my); strm.Close(); Response.Write("序列化對象成功!"); }
3.將二進製文件反序列化為實體類: 
IFormatter ifm = new BinaryFormatter(); Stream strm = new FileStream(Server.MapPath(@"my.xs"), FileMode.Open, FileAccess.Read); MyObject my = (MyObject)ifm.Deserialize(strm); strm.Close(); Response.Write("調用反序列化後的對象的屬性為n1:"+my.n1+"n2:"+my.n2+"str:"+my.str+"<BR>"); Response.Write("調用反序列化後的對象的Add方法計算的值:" + my.Add(1.1, 5.3).ToString());
代碼演示(2)XML格式序列化:
 
用到的命名空間:
using System.IO;
using System.Xml.Serialization;
①代碼生成一個DataSet並將它序列化為XML格式:
protected void Button3_Click(object sender, EventArgs e) { DataTable DT = new DataTable(); DataColumnCollection DCC = DT.Columns; DCC.Add(new DataColumn("ID",typeof (int ))); DCC.Add(new DataColumn("Name", typeof(string))); DCC.Add(new DataColumn("Age", typeof(short ))); for (int i = 0; i < 10;i++ ) { DataRow DR = DT.NewRow(); DR["ID"] = i; DR["Name"] = "name" + i.ToString(); DR["Age"] = 20 + i; DT.Rows.Add(DR); } DataSet ds = new DataSet(); ds.Tables.Add(DT); SerializeDataSet(Server.MapPath(@"User.xml"), ds); } private void SerializeDataSet(string filename, DataSet ds) { XmlSerializer ser = new XmlSerializer(typeof (DataSet )); TextWriter writer = new StreamWriter(filename); ser.Serialize(writer ,ds); writer.Close(); }
②將XML文件反序列化回來:
protected void Button4_Click(object sender, EventArgs e) { XmlSerializer ser = new XmlSerializer(typeof(DataSet)); FileStream fs = new FileStream(Server .MapPath (@"User.xml"),FileMode .Open); DataSet ds = (DataSet)ser.Deserialize(fs); GridView1.DataSource = ds.Tables[0]; GridView1.DataBind(); fs.Close(); } 

最後更新:2017-04-02 04:00:25

  上一篇:go BIOS 屏幕顯示中斷
  下一篇:go 反射