.NET 序列化与程序集详解
1. 显式序列化
当客户端需要将复杂的对象图序列化到磁盘文件时,若对象已支持序列化,客户端需两个关键要素来启动显式序列化:标识对象图根的对象引用,以及标识序列化目标位置的流引用。
为实现序列化和反序列化,框架定义了 IFormatter
标准接口,提供了 Serialize
和 Deserialize
方法。框架还提供了该接口的两个具体实现类:
- BinaryFormatter
:位于 System.Runtime.Serialization.Formatters.Binary
命名空间,使用二进制格式序列化对象图。
- SoapFormatter
:位于 System.Runtime.Serialization.Formatters.Soap
命名空间,使用 SOAP 第 5 节编码规则将对象图序列化为 XML。
以下是使用 BinaryFormatter
进行序列化的示例代码:
public void SerializeGraph(string file, object root) {
Stream stm = new FileStream(file, FileMode.Create);
IFormatter fmt = new BinaryFormatter();
fmt.Seriali