跳至内容

.NET 开发基金会/序列化

来自维基教科书,开放世界中的开放书籍


序列化和输入/输出


序列化和输入/输出

[编辑 | 编辑源代码]

考试目标:在 .NET Framework 应用程序中实现序列化和输入/输出功能

序列化

[编辑 | 编辑源代码]

维基百科对序列化的定义是:“在数据存储和传输的背景下,序列化是将对象保存到存储介质(如文件或内存缓冲区)或通过网络连接链接以二进制形式传输的过程”。

这里解决的问题是,对象由正在运行的进程创建,因此与该进程实例的生命周期绑定。如果由于任何原因,并且可能有许多原因,您想在另一个进程实例的上下文中“传输”该对象,那么您就遇到了一个问题,您通过在原始进程中“保存”对象的 state 并在目标进程中“恢复”它来解决。这个“保存”部分称为序列化,而“恢复”部分称为反序列化。

可序列化属性

[编辑 | 编辑源代码]

如果对象的类名前缀为 [Serializable] 属性,则该对象是可序列化的。

对象序列化

[编辑 | 编辑源代码]

可以使用 BinaryFormatter 类 来序列化对象。要序列化,请使用 BinaryFormatter 的 Serialize() 方法,该方法接受一个流和一个可序列化对象作为参数。要反序列化,请使用 BinaryFormatter 的 Deserialize() 方法,该方法接受一个流作为参数,并返回一个可以转换回原始对象类型的对象。请记住,在使用完流后,通过调用流的 Close() 方法来关闭流。

XML 序列化

[编辑 | 编辑源代码]

可以使用 XmlSerializer 类 来序列化对象。要序列化,请使用 XmlSerializer 的 Serialize() 方法,该方法接受一个流和一个可序列化对象作为参数。要反序列化,请使用 XmlSerializer 的 Deserialize() 方法,该方法接受一个流作为参数,并返回一个可以转换回原始对象类型的对象。请记住,在使用完流后,通过调用流的 Close() 方法来关闭流。

有关 XML 和 SOAP 序列化的概述,请参阅 MSDN

自定义序列化

[编辑 | 编辑源代码]

ISerializable 接口允许对象控制其自身的序列化和反序列化。

读取器

[编辑 | 编辑源代码]

写入器

[编辑 | 编辑源代码]

格式化器

[编辑 | 编辑源代码]

格式化器用于将对象序列化为流。

文件 IO

[编辑 | 编辑源代码]

管理字节流

[编辑 | 编辑源代码]

隔离存储

[编辑 | 编辑源代码]

有关隔离存储任务的常规讨论,请参阅 MSDN

类、接口和工具

[编辑 | 编辑源代码]

序列化和反序列化

[编辑 | 编辑源代码]

考试目标:使用运行时序列化技术序列化或反序列化对象或对象图。

(参考 System.Runtime.Serialization 命名空间)

序列化接口
[编辑 | 编辑源代码]

IDeserializationCallback 接口 - MSDN

IFormatter 接口和 IFormatterConverter 接口

IFormatter 接口 - MSDN
IFormatterConverter 接口 - MSDN

ISerializable 接口 - MSDN

序列化属性
[编辑 | 编辑源代码]
例如,有关一些序列化属性,请参阅 MSDN

OnDeserializedAttribute 类和 OnDeserializingAttribute 类

OnDeserializedAttribute 类 - MSDN
OnDeserializingAttribute 类 - MSDN

OnSerializedAttribute 类和 OnSerializingAttribute 类

OnSerializedAttribute 类 - MSDN
OnSerializingAttribute 类 - MSDN

OptionalFieldAttribute 类 - MSDN

SerializationEntry 结构和 SerializationInfo 类
[编辑 | 编辑源代码]

SerializationEntry 结构 - MSDN

SerializationInfo 类 - MSDN

ObjectManager 类
[编辑 | 编辑源代码]

ObjectManager 类 - MSDN

Formatter 类、FormatterConverter 类和 FormatterServices 类
[编辑 | 编辑源代码]

Formatter 类 - MSDN

FormatterConverter 类 - MSDN

FormatterServices 类 - MSDN

StreamingContext 结构
[编辑 | 编辑源代码]

StreamingContext 结构 - MSDN

XML 序列化

[编辑 | 编辑源代码]

考试目标:使用 System.Xml.Serialization 命名空间控制对象序列化为 XML 格式。

XmlSerializer 类 - MSDN

考试目标:使用 XmlSerializer 类将对象序列化和反序列化为 XML 格式。

使用序列化属性控制序列化 - MSDN

有关控制序列化的属性列表,请参阅 MSDN

实现 XML 序列化接口以提供 XML 序列化的自定义格式 - MSDN

System.Xml.Serialization 命名空间提供委托和事件处理程序 - MSDN

自定义序列化

[编辑 | 编辑源代码]

考试目标:使用序列化格式化程序类实现自定义序列化格式。

SoapFormatter 类 - MSDN

(参阅 System.Runtime.Serialization.Formatters.Soap 命名空间)

BinaryFormatter 类 - MSDN

(参阅 System.Runtime.Serialization.Formatters.Binary 命名空间

文件系统类

[编辑 | 编辑源代码]

考试目标:使用文件系统类访问文件和文件夹。

(参阅 System.IO 命名空间)

File 类和 FileInfo 类

有关常见的 IO 任务,请参阅 MSDN
File 类 - MSDN
FileInfo 类 - MSDN

Directory 类和 DirectoryInfo 类

Directory 类 - MSDN
DirectoryInfo 类 - MSDN

DriveInfo 类和 DriveType 枚举

DriveInfo 类 - MSDN
DriveType 枚举 - MSDN

FileSystemInfo 类和 FileSystemWatcher 类

FileSystemInfo 类
FileSystemWatcher 类
FileSystemWatcher 类旨在检测文件系统中的更改。
它可以使用 Filter 和 Path 属性进行参数化。
  Example: 
  FileSystemWatcher w = new FileSystemWatcher();
  w.Filter = "*.txt";
  w.Path = @"C:\Windows";
Filter 属性仅用于检查文件名的模式。因此,不要在那里使用目录路径。
您可以添加诸如 WaitForChanged(..) 之类的方法来监视指定区域的更改。

Path 类 - MSDN

System.IO.Path 类具有许多用于创建和解析资源路径的有用的静态方法

ErrorEventArgs 类和 ErrorEventHandler 委托

ErrorEventArgs 类 - MSDN
ErrorEventHandler 委托 - MSDN

RenamedEventArgs 类和 RenamedEventHandler 委托

RenamedEventArgs 类 - MSDN
RenamedEventHandler 委托 - MSDN

字节流

[编辑 | 编辑源代码]

考试目标:使用 Stream 类管理字节流。

(参阅 System.IO 命名空间)

FileStream 类 - MSDN

Stream 类 - MSDN

System.IO.Stream 是所有其他流继承的抽象基类。不可能实例化 Stream 类。而是使用从 Stream 派生的其他类之一。
就 70-536 考试目标而言,从 Stream 派生的最重要的类是
  • System.IO.FileStream
  • System.IO.MemoryStream
  • System.IO.Compression.DeflateStream
  • System.IO.Compression.GZipStream
  • System.Security.Cryptography.CryptoStream
  • System.IO.BufferedStream
有关从 Stream 派生的类的完整列表,请参阅 MSDN
有关文件和流 IO 的讨论,请参阅 MSDN

MemoryStream 类 - MSDN

BufferedStream 类 - MSDN

Reader 和 Writer 类

[编辑 | 编辑源代码]

考试目标:使用 Reader 和 Writer 类管理 .NET Framework 应用程序数据。

(参阅 System.IO 命名空间)

StringReader 类和 StringWriter 类 - MSDNMSDN

StringReader 和 StringWriter 继承自 TextReader/TextWriter。
  • StringReader 是用于字符串的 TextReader。
  • StringWriter 是用于字符串的 TextWriter。

TextReader 类和 TextWriter 类

TextReader 类 - MSDN
TextReader 和 TextWriter 是抽象基类,StreamReader、StreamWriter、StringReader 和 StringWriter 继承自它们。StreamReader 和 StringReader 继承自 TextReader。StreamWriter 和 StringWriter 继承自 TextWriter。
TextWriter 类 - MSDN

StreamReader 类和 StreamWriter 类 - MSDNMSDN

StreamReader 和 StreamWriter 类提供用于读取和写入基于字符的流的基本功能(ReadLine()、WriteLine()、ReadToEnd())。
StreamReader 和 StreamWriter 继承自抽象类 TextReader 和 TextWriter。
  • StreamReader 是流的 TextReader。
  • StreamWriter 是流的 TextWriter。
StreamReader 的 Peek 和 Read 方法
  • Peek 方法获取特定位置的字符,但不移动。
  • Read 方法获取特定位置的字符并移动。

BinaryReader 类和 BinaryWriter 类

BinaryReader 类 - MSDN
BinaryWriter 类 - MSDN

压缩和隔离存储

[编辑 | 编辑源代码]

考试目标:在 .NET Framework 应用程序中压缩或解压缩流信息,并使用隔离存储提高应用程序数据的安全性。

(参考 System.IO.Compression 命名空间)

(参考 System.IO.IsolatedStorage 命名空间)

IsolatedStorageFile 类 - MSDN

IsolatedStorageFileStream 类 - MSDN

DeflateStream 类 - MSDN

GZipStream 类 - MSDN


上一页 / 下一页

华夏公益教科书