序列化是将对象或对象图转换成字节流的过程。反序列化是将字节流转换回对象图的过程。序列化可以用于应用程序状态的保存、剪贴板复制/粘贴对象、对象克隆和网络对象传输等。序列化的方式有:
1) BinaryFormatter 早期的序列化方式,存在安全风险,不推荐使用。
2) BinaryReader/BinaryWriter 二进制读写Primitive Type,并支持字符串读写时的编码设定。
3) XML序列化
4) Json序列化 除了MS提供的库外,Newtonsoft.json非常好用。
因为BinaryFormatter存在大量的存量使用,做个简单记录。使对象能够通过BinaryFormatter序列化有特性和接口两种实现方式。当特性和接口同时使用时,忽略特性。接口对数据进行完全的控制,且避免使用反射。
1、通过特性实现
[Serializable]
class Circle
{
private double _radius;
[NonSerialized]
private double _area;
public Circle(double radius)
{
_radius = radius;
_area = Math.PI *

本文探讨了C#中的序列化概念,包括对象转换为字节流和反序列化回对象的过程。提到了BinaryFormatter的安全风险,并推荐使用XML和Json序列化。文章详细介绍了如何通过特性及接口实现序列化,特别指出当特性与接口同时使用时,接口优先。此外,还提及了BinaryFormatter在现有应用中的广泛使用,以及《CLR via C#》作为参考资料。
最低0.47元/天 解锁文章
775

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



