不同的序列化技术
二进制序列化
- 保存类型保真。
- System.Runtime.Serialization 包含可用于序列化和反序列化对象的类
xml和Soap
- 只会序列化公共属性和字段,并且不会保留类型保真
- System.Xml.Serialization 用于将对象序列化为Xml格式的文档的类
- 二进制和xml序列化的实现
- 基本和自定义
- 基本序列化使用.Net自动序列化对象,唯一要求是类应用SerializableAttribute 特性
- 在自定义序列化中,可以精确指定要序列化的对象以及具体执行方式。类必须被标记为SerializableAttribute,并且实现ISeriablizable接口
Json序列化
- 只序列化公共属性,不会保留类型保真
- System.Text.Json 包含将对象序列化为Json格式的类
ISerializable说明
- 通过 ISerializable 接口,类可以执行其自己的序列化行为。
Serializable 说明
- 当你序列化一个对象时候,如果没有标注这个特性就会引发异常【可能序列化的任何类都必须标记为SerializableAttribute】
- 你可以实现ISerializable接口来替代序列化进程
- 这个特性默认是序列化所有私有和公共字段
- 可以通过
NonSerializedAttribute
特性来排除某一个字段 - 请注意,无法继承 Serializable 属性。 如果从 MyObject 派生新类,新类也必须标记为以上特性,否则将无法序列化。