实践是检验真理的唯一标准,看下面的代码:
//序列化和反序列化的测试
//构造测试数据,一个DataTable
System.Data.DataTable dt = new DataTable();
dt.Columns.Add("Id",System.Type.GetType("System.Int32"));
dt.Columns.Add("Name",System.Type.GetType("System.String"));
DataRow dr1 = dt.NewRow();
dr1["Id"] = 1;
dr1["Name"] = "atao";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["Id"] = 2;
dr2["Name"] = "tommy";
dt.Rows.Add(dr2);
//序列化
IFormatter formatter = new SoapFormatter();
System.IO.FileStream fs = new System.IO.FileStream("d:/test.xml",
System.IO.FileMode.Create,
System.IO.FileAccess.Write,
System.IO.FileShare.None);
formatter.Serialize(fs,dt);
fs.Close();
//反序列化
IFormatter formatter_d = new SoapFormatter();
System.IO.FileStream fs_d = new System.IO.FileStream("d:/test.xml",
System.IO.FileMode.Open,
System.IO.FileAccess.Read,
System.IO.FileShare.None);
DataTable dtt = (DataTable)formatter_d.Deserialize(fs_d);
this.DataGrid1.DataSource = dtt.DefaultView;
this.DataGrid1.DataBind();
//_________________________________________________________________
//构造测试数据,一个DataTable
System.Data.DataTable dt = new DataTable();
dt.Columns.Add("Id",System.Type.GetType("System.Int32"));
dt.Columns.Add("Name",System.Type.GetType("System.String"));
DataRow dr1 = dt.NewRow();
dr1["Id"] = 1;
dr1["Name"] = "atao";
dt.Rows.Add(dr1);
DataRow dr2 = dt.NewRow();
dr2["Id"] = 2;
dr2["Name"] = "tommy";
dt.Rows.Add(dr2);
//序列化
IFormatter formatter = new SoapFormatter();
System.IO.FileStream fs = new System.IO.FileStream("d:/test.xml",
System.IO.FileMode.Create,
System.IO.FileAccess.Write,
System.IO.FileShare.None);
formatter.Serialize(fs,dt);
fs.Close();
//反序列化
IFormatter formatter_d = new SoapFormatter();
System.IO.FileStream fs_d = new System.IO.FileStream("d:/test.xml",
System.IO.FileMode.Open,
System.IO.FileAccess.Read,
System.IO.FileShare.None);
DataTable dtt = (DataTable)formatter_d.Deserialize(fs_d);
this.DataGrid1.DataSource = dtt.DefaultView;
this.DataGrid1.DataBind();
//_________________________________________________________________
要更换序列化方式,只需把formatter更换就可以了。比如:IFormatter formatter_d = new BinaryFormatter();