C#如何实现对象的序列化和反序列化


本篇内容主要讲解“C#如何实现对象的序列化和反序列化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何实现对象的序列化和反序列化”吧!将对象及其状态保存起来,通常是保存到文件中,叫序列化。
将文件还原为对象,叫反序列化。接口IFormatterobject Deserialize(Stream serializactionStream)void Serialize(Stream serializationStream, object graph)System.Runtime.Serialization.Formatters.Binary下的BinaryFormatte免费云主机域名r,将对象序列化成二进制System.Runtime.Serialization.Formatters.Soap下的SoapFormatter,将对象序列化成人类可读的文本Simple Object Access Protocol,简单对象访问协议,基于XML协议。注意:对象序列化需要打上[Serializable]不可序列化的字段需要打上[NonSerialized],该属性只能打在字段上结果:结果:注意:私有字段是可以反序列化的,因为反序列化的底层是通过反射来实现的,而反射是可以访问到私有字段的。conn变成了null,这是因为反序列化并不会调用构造函数,而且conn本身设置成了不可以序列化。再次运行,得到:结果:好处:SOAP是开放的协议,可以跨平台的其他程序也可以使用SoapFormatter序列化的文件缺点:xml文件尺寸比较大主程序:可序列化类:结果:主要借助帮助类SerializationInfo,以键值对形式把需要序列化的字段或属性保存在SerializationInfo中。另外,还需要一个反序列化时用于还原属性值的构造函数。结果:有这样一个基类,不可以序列化。创建一个子类继承不可以序列化的ObjectBase,并实现ISerializable接口。主程序:结果:使用BinaryFormatter:以二进制形式序列化和反序列化的时候用到。使用SoapFormatter:以xml形式,或跨平台调序列化和反序列化的时候用到。[NonSerialized][OnSerializing][OnSerialized][OnDeserializing]这4个事件可以对序列化和反序列化过程进行细粒度控制。ISerializable接口:可以把序列化字段或属性以键值对形式保存在SerializationInfo中,甚至让一个没有序列化特性的基类实现序列化。到此,相信大家对“C#如何实现对象的序列化和反序列化”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: Android四大组件之Service服务实例分析

这篇文章主要介绍了Android四大组件之Service服务实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android四大组件之Service服务实例分析文章都会有所收获,下面我们一起来看看吧。Service是Andro…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/25 20:45
下一篇 03/25 20:45

相关推荐