实践是检验真理的唯一标准,看下面的代码:

.NET序列化和反序列化//序列化和反序列化的测试
.NET序列化和反序列化
//构造测试数据,一个DataTable
.NET序列化和反序列化
System.Data.DataTable dt = new DataTable();
.NET序列化和反序列化dt.Columns.Add(
"Id",System.Type.GetType("System.Int32"));
.NET序列化和反序列化dt.Columns.Add(
"Name",System.Type.GetType("System.String"));
.NET序列化和反序列化
.NET序列化和反序列化DataRow dr1 
= dt.NewRow();
.NET序列化和反序列化dr1[
"Id"= 1;
.NET序列化和反序列化dr1[
"Name"= "atao";
.NET序列化和反序列化dt.Rows.Add(dr1);
.NET序列化和反序列化
.NET序列化和反序列化DataRow dr2 
= dt.NewRow();
.NET序列化和反序列化dr2[
"Id"= 2;
.NET序列化和反序列化dr2[
"Name"= "tommy";
.NET序列化和反序列化dt.Rows.Add(dr2);
.NET序列化和反序列化
.NET序列化和反序列化
//序列化
.NET序列化和反序列化
IFormatter formatter = new SoapFormatter();
.NET序列化和反序列化System.IO.FileStream fs 
= new System.IO.FileStream("d:/test.xml",
.NET序列化和反序列化                                                                             System.IO.FileMode.Create,
.NET序列化和反序列化                                                                             System.IO.FileAccess.Write,
.NET序列化和反序列化                                                                             System.IO.FileShare.None);
.NET序列化和反序列化formatter.Serialize(fs,dt);
.NET序列化和反序列化fs.Close();
.NET序列化和反序列化
.NET序列化和反序列化
.NET序列化和反序列化
//反序列化
.NET序列化和反序列化
IFormatter formatter_d = new  SoapFormatter();
.NET序列化和反序列化System.IO.FileStream fs_d 
= new System.IO.FileStream("d:/test.xml",
.NET序列化和反序列化                                                                                 System.IO.FileMode.Open,.NET序列化和反序列化
.NET序列化和反序列化                                                                                 System.IO.FileAccess.Read,.NET序列化和反序列化
.NET序列化和反序列化                                                                                 System.IO.FileShare.None);
.NET序列化和反序列化
.NET序列化和反序列化DataTable dtt 
= (DataTable)formatter_d.Deserialize(fs_d);
.NET序列化和反序列化
.NET序列化和反序列化
this.DataGrid1.DataSource = dtt.DefaultView;
.NET序列化和反序列化
this.DataGrid1.DataBind();
.NET序列化和反序列化
//_________________________________________________________________
.NET序列化和反序列化

要更换序列化方式,只需把formatter更换就可以了。比如:IFormatter formatter_d = new  BinaryFormatter();

相关文章: