C#编程中的序列化.doc

C#编程中的序列化.doc

ID:57863229

大小:79.00 KB

页数:9页

时间:2020-09-02

C#编程中的序列化.doc_第1页
C#编程中的序列化.doc_第2页
C#编程中的序列化.doc_第3页
C#编程中的序列化.doc_第4页
C#编程中的序列化.doc_第5页
资源描述:

《C#编程中的序列化.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C#编程中的序列化序列化 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。几种序列化技术:   1)二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。远程处理使用序列化“通过值”在计算机或应用程序域之间传递对象。   2)XML序列化仅序列化公共属性和字段,且不保持类型保真度。当您要提供或使用数据而不限制使用该数

2、据的应用程序时,这一点是很有用的。由于XML是一个开放式标准,因此,对于通过Web共享数据而言,这是一个很好的选择。SOAP同样是一个开放式标准,这使它也成为一个颇具吸引力的选择。   3)使用提供的数据协定,将类型实例序列化和反序列化为XML流或文档(或者JSON格式)。常应用于WCF通信。BinaryFormatter序列化可被定义为将对象的状态存储到存储媒介中的过程。在此过程中,对象的公共字段和私有字段以及类的名称(包括包含该类的程序集)都被转换为字节流,然后写入数据流。在以后反序列化该对象时,创建原始对象的精确复本。1、使一个类可序

3、列化的最简单方式是按如下所示使用Serializable属性标记。2、有选择的序列化   通过用NonSerialized属性标记成员变量,可以防止它们被序列化3、自定义序列化   1)在序列化期间和之后运行自定义方法最佳做法也是最简单的方法(在.NetFramework2.0版中引入),就是在序列化期间和之后将下列属性应用于用于更正数据的方法:OnDeserializedAttributeOnDeserializingAttributeOnSerializedAttributeOnSerializingAttribute具体事例如下://

4、Thisistheobjectthatwillbeserializedanddeserialized.[Serializable()]publicclassTestSimpleObject{//Thismemberisserializedanddeserializedwithnochange.publicintmember1;//Thevalueofthisfieldissetandresetduringand//afterserialization.privatestringmember2;//Thisfieldisnotserializ

5、ed.TheOnDeserializedAttribute//isusedtosetthemembervalueafterserialization.[NonSerialized()]publicstringmember3;//Thisfieldissettonull,butpopulatedafterdeserialization.privatestringmember4;//Constructorfortheclass.publicTestSimpleObject(){member1=11;member2="HelloWorld!";m

6、ember3="Thisisanonserializedvalue";member4=null;}publicvoidPrint(){Console.WriteLine("member1='{0}'",member1);Console.WriteLine("member2='{0}'",member2);Console.WriteLine("member3='{0}'",member3);Console.WriteLine("member4='{0}'",member4);}[OnSerializing()]internalvoidOnSe

7、rializingMethod(StreamingContextcontext){member2="Thisvaluewentintothedatafileduringserialization.";}[OnSerialized()]internalvoidOnSerializedMethod(StreamingContextcontext){member2="Thisvaluewasresetafterserialization.";}[OnDeserializing()]internalvoidOnDeserializingMethod

8、(StreamingContextcontext){member3="Thisvaluewassetduringdeserialization";}[OnDeserialized

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。