.NET 中的序列化:CLR 与 JSON
在 .NET 开发中,序列化是一个重要的概念,它允许将对象转换为可以存储或传输的格式,反之亦然。本文将介绍两种序列化方式:CLR 序列化和 JSON 序列化,并深入探讨它们的特点、使用方法以及适用场景。
1. CLR 序列化
CLR 序列化内置于运行时本身,并非仅仅是一个库特性。不过,它已被弃用许久,在 .NET 的最新版本中,默认情况下该功能已被禁用。微软还宣布,在 .NET 9.0 中会移除允许重新启用它的设置。但由于它曾提供过独特且实用的功能,仍有人会考虑使用它。
1.1 CLR 序列化的优点
- 处理对象引用 :当序列化包含多个指向同一对象的列表时,CLR 序列化会检测到这种情况,仅存储该对象的一个副本。在反序列化时,会重新创建“一个对象多个引用”的结构,避免了重复,也不会因循环引用而产生问题。
- 支持派生类型 :如果列表中包含从同一基类派生的多种类型,CLR 反射能检测到这一点。反序列化列表时,会创建与原始列表中相同类型的对象。
- 使用简单 :只需为类型应用
[Serializable]属性,CLR 就会自动处理序列化时写出对象所有字段,以及反序列化时读回这些字段的过程。
1.2 CLR 序列化的缺点
CLR 序列化几乎无法避免安全问题。因为序列化流描述了要创建的对象类型以及这些对象中所有字段的值。如果构建的系统接受序列化流作为输入(例如通过网络),
超级会员免费看
订阅专栏 解锁全文
4

被折叠的 条评论
为什么被折叠?



