用.NET 框架实现序列化
序列化是将一个对象保存到存储介质上或者将对象进行转换使之能够在网络上传送的行为。
在一个对象被序列化 之后,你会想要将它反序列化,也就是将数据重新转换为可用的对象
的行为。这种类型的功能被用在一个对象必须被从一个上下文封送到另一个上下文的时候,
例如 当对象跨越 App 域的时候。另外一个例子是 Web 服务——对象在服务器上被序列化,
通过网络被(封送或)发送到的客户端,然后被反序列化成有用的对象。
从二进制到 XML,.NET 框架为开发人员提供了很多序列化选项,甚至允许开发人员创建
自己的序列化例程。在本文中,我将着重讨论 XML 的序列化,并告诉你如何利用这一内置
的功能。
XML 序列化
.NET 框架提供的一种形式的序列化是 XML 序列化。在这种类型的序列化里,对象状态被
以 XML 格式保存。这使得被序列化的对象能够被不同的系统取 得并修改,甚至是那些不
是用.NET 编写的系统。另外一个优势是被序列化的对象对于人来说是可读和可写的——因
此更新对象的方式莫过于打开写字板更改其 值。
XML 序列化常常被来远程控制项目和 Web 服务项目里,虽然你可能会在别的地方发现它,
比如 DataSet 封送。在与 Xpath 查询和 Predicate 方法一起使用的时候,XML 序列化能
够被用来实现面向对象的数据库——我会在今后的文章里谈这方面的内容。
使用 XML 序列化
在.NET 框架里利用内置的 XML 序列化方法相对较为容易。你只需要熟悉一些类和属性就
可以开始使用简单的 XML 序列化了:
System.Xml.Serialization 命名空间:含有使用 XML 序列化所需要的类和功能。这个命
名空间应该被放在使用 XML 序列化的类的顶部的一个“using”命令里。
XmlSerializer 类:提供将对象序列化和反序列化的功能。
XmlIgnore 属性:告诉 XmlSerializer 类跳过你不希望序列化的成员。
这个列表只不过让你对序列化有一个初步的了解。还有更多的对象可以供你在使用 XML 序
列化的时候使用。
下面代码是将 Customer 对象序列化的一个简单例子。这个 Customer 对象在下载文件的示
例应用程序里被定义。
Customer customer = newCustomer();