序列化示例
更新:2007 年 11 月
此解决方案演示如何序列化和反序列化一个对象。
获取示例及其安装说明
执行下列一项或多项操作:
在“帮助”菜单上,单击“示例”。
自述文件将显示有关示例的信息。
访问 Visual Studio 2008 示例网站。该网站提供了最新版本的示例。
在安装了 Visual Studio 的计算机上查找示例。默认情况下,示例和自述文件安装在驱动器号:\Program Files\Microsoft Visual Studio 9.0\Samples\lcid 中。对于 Visual Studio 的速成版,所有示例都可联机找到。
有关更多信息,请参见定位示例文件。
安全说明: |
---|
此示例代码用于阐释概念,因此仅显示与此概念相关的代码。该代码可能不符合特定环境的安全要求,因此不应原样搬用所显示的代码。我们建议您添加安全性代码和错误处理代码,以使项目更加安全可靠。Microsoft“按原样”提供此示例代码,不提供任何保证。 |
运行此示例
- 按 F5。
演示
此应用程序包含两个类,一个使用标准序列化,一个使用自定义序列化。用户界面包括序列化和反序列化这两个类的按钮。使用标准序列化的类可以序列化为 SOAP 文件或二进制文件。使用自定义序列化的类被序列化为 SOAP 文件。TextBox 控件用于显示 SOAP 文件。这两个类都有 SerializableAttribute 属性。下表将对这些类进行描述。
类成员 |
SerializationClass |
CustomSerializationClass |
---|---|---|
PublicVariable |
公共变量在不做更改的情况下进行序列化和反序列化。 |
公共变量在不做更改的情况下进行序列化和反序列化。 |
PublicProperty |
支持该属性的私有变量在不做更改的情况下进行序列化和反序列化。 |
支持该属性的私有变量被序列化为 -1,而不管在用户界面中设置为何值。所以它被反序列化为 -1。 |
NonSerializedVariable |
此变量没有序列化,因为它被标记为 NonSerializedAttribute。公共变量没有序列化,所以反序列化的值为 0。 |
尽管该变量标记为 NonSerializedAttribute,但它被序列化,因为自定义序列化重写了该设置。公共变量在不做更改的情况下进行序列化和反序列化。 |
下面演示了三种类型的序列化:
SOAP 格式化 使用 SoapFormatter 类序列化 Class1。
二进制格式化 使用 BinaryFormatter 类序列化 Class1。
自定义格式化 Class2 实现 ISerializable 接口,包括用于执行自定义序列化的 GetObjectData 方法。