二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。远程处理使用序列化“通过值”在计算机或应用程序域之间传递对象。 XML 序列化仅序列化公共属性和字段 ,且不保持类型保真度。当您要提供或使用数据而不限制使用该数据的应用程序时,这一点是很有用的。由于 XML 是一个开放式标准,因此,对于通过 Web 共享数据而言,这是一个很好的选择。SOAP 同样是一个开放式标准,这使它也成为一个颇具吸引力的选择。
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.IO;
using
System.Xml.Serialization;
public
partial
class
_Default : System.Web.UI.Page
...
{ protected void Page_Load( object sender, EventArgs e) ... { Test dd = new Test(); dd.Serialiaze(); } [Serializable] public class Person ... { private string name; public string Name ... { get ... { return name; } set ... { name = value; } } public string Sex; public int Age = 31 ; public Course[] Courses; public Person() ... { } public Person( string Name) ... { name = Name; Sex = " 男 " ; } } [Serializable] public class Course ... { public string Name; [XmlIgnore] // 指下面这个字段不用序列化 public string Description; public Course() ... { } public Course( string name, string description) ... { Name = name; Description = description; } } class Test ... { // 序列化 public void Serialiaze() ... { Person c = new Person( " cyj " ); c.Courses = new Course[ 2 ]; // c.Courses = new Course[2]; c.Courses[ 0 ] = new Course( " 英语 " , " 交流工具 " ); c.Courses[ 1 ] = new Course( " 数学 " , " 自然科学 " ); XmlSerializer xs = new XmlSerializer( typeof (Person)); Stream stream = new FileStream( @" c:cyj.xml " , FileMode.Create, FileAccess.Write, FileShare.ReadWrite); xs.Serialize(stream, c); stream.Close(); } // 反序列化 public void Deserialize() ... { XmlSerializer xs = new XmlSerializer( typeof (Person)); Stream stream = new FileStream( @" c:cyj.xml " , FileMode.Open, FileAccess.Read, FileShare.ReadWrite); Person p = (Person)xs.Deserialize(stream); Console.WriteLine(p.Name); Console.WriteLine(p.Age.ToString()); Console.WriteLine(p.Courses.Length.ToString()); Console.Read(); } } }