- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NET中对象序列化方法论文.doc
NET中对象序列化方法论文
clr/ assem/ToFile SOAP-ENV:Body a1:MyObject id=ref-1 n1 1 /n1 n2 24 /n2 str id=ref-3 一些字符串 /str /a1:MyObject /SOAP-ENV:Body /SOAP-ENV:Envelope 需要注意的是,无法继承 Serializable 属性。如果从 MyObject 派生出一个新的类,则这个新的类也必须使用该属性进行标记,否则将无法序列化。例如,如果试图序列化以下类实例,将会显示一个 SerializationException,说明 MyStuff 类型未标记为可序列化。public class MyStuff:MyObject { public int n3;} 5 选择性序列化 类通常包含不应被序列化的字段。例如,假设某个类用一个成员变量来存储线程 ID。当此类被反序列化时,序列化此类时所存储的 ID 对应的线程可能不再运行,所以对这个值进行序列化没有意义。可以通过使用 NonSerialized 属性标记成员变量来防止它们被序列化,如下所示:Serializablepublic class MyObject {public int n1;NonSerializedpublic int n2;public String str;}6 自定义序列化 可以通过在对象上实现 ISerializable 接口来自定义序列化过程。这一功能在反序列化后成员变量的值失效时尤其有用,但是需要为变量提供值以重建对象的完整状态。要实现 ISerializable,需要实现 GetObjectData 方法以及一个特殊的构造函数,在反序列化对象时要用到此构造函数。以下代码示例说明了如何在前一部分中提到的 MyObject 类上实现 ISerializable接口。Serializablepublic class MyObject:ISerializable {public int n1;public int n2;public String str;public MyObject() { }protected MyObject(SerializationInfo info,StreamingContext context){n1 = info.GetInt32(i);n2 = info.GetInt32(j);str = info.GetString(k);}public virtual void GetObjectData(SerializationInfo info,StreamingContext context){info.AddValue(i,n1);info.AddValue(j,n2);info.AddValue(k,str);}} 在序列化过程中调用 GetObjectData 时,需要填充方法调用中提供的 SerializationInfo 对象。只需按名称/值对的形式添加将要序列化的变量。其名称可以是任何文本。只要已序列化的数据足以在反序列化过程中还原对象,便可以自由选择添加至 SerializationInfo 的成员变量。如果基对象实现了 ISerializable,则派生类应调用其基对象的 GetObjectData 方法。 需要强调的是,将 ISerializable 添加至某个类时,需要同时实现 GetObjectData 以及特殊的构造函数。如果缺少 GetObjectData,编译器将发出警告。但是,由于无法强制实现构造函数,所以,缺少构造函数时不会发出警告。如果在没有构造函数的情况下尝试反序列化某个类,将会出现异常。 在反序列化过程中,使用出于此目的而提供的构造函数将 SerializationInfo 传递给类。对象反序列化时,对构造函数的任何可见性约束都将被忽略,因此,可以将类标记为 public、protected、internal 或 private。通常,在类未封装的情况下,将构造函数标记为 protect。如果类已封装,则应标记为 private。要还原对象的状态,只需使用序列化时采用的名称,从 SerializationInfo 中检索变量的值。如果基类实现了 ISerializable,则应调用基类的构造函数,以使基础对象还原其变量。 如果从实现了 ISerializable 的类派生出一个新的类,则只要新的类中含有任何需要序列化的变量,就必须同时实现构造函数以及 GetObjectData 方法。以下代码片段显示了如何使用上文所示的 MyObject 类来完成此操作。Serializablepublic class ObjectT; public
您可能关注的文档
- Livin与恶性肿瘤的研究进展论文.doc
- LMP1与绿色荧光蛋白融合基因慢病毒的制备论文.doc
- LNG站工艺设备设施的选择与配置论文.doc
- Log rank 检验所需样本量的测定:迭代非中心法论文.doc
- Logistic回归分析在超声多参数鉴别乳腺良、恶性肿块中的应用论文.doc
- Logistic回归分析的判别预测功能及其应用论文.doc
- LPG燃料汽车是跨时代的交通工具论文.doc
- LPT在检测胸腹水中恶性肿瘤细胞的应用价值.doc
- LXK法锚杆在基坑围护结构设计中的应用论文.doc
- L┐NAME对新生鼠缺氧性脑损伤内源性NO和ET的影响论文.doc
- 2025AACR十大热门靶点推荐和解读报告52页.docx
- 财务部管理报表.xlsx
- 高中物理新人教版选修3-1课件第二章恒定电流第7节闭合电路欧姆定律.ppt
- 第三单元知识梳理(课件)-三年级语文下册单元复习(部编版).pptx
- 俄罗斯知识点训练课件-七年级地理下学期人教版(2024).pptx
- 课外古诗词诵读龟虽寿-八年级语文上学期课内课件(统编版).pptx
- 高三语文二轮复习课件第七部分实用类文本阅读7.2.1.ppt
- 高考物理人教版一轮复习课件第4章第3讲圆周运动.ppt
- 高考英语一轮复习课件53Lifeinthefuture.ppt
- 2025-2030衣柜行业风险投资发展分析及投资融资策略研究报告.docx
最近下载
- 福建省厦门市2024-2025学年高二下学期期末质量检测生物试卷.docx
- 西南18J515室内装修.docx VIP
- 2024年湖北省恩施州宣恩县晓关乡招聘社区工作者真题参考答案详解.docx VIP
- 2024年湖北省恩施州鹤峰县太平乡招聘社区工作者真题含答案详解.docx VIP
- 永州冷水滩区招聘城市社区专职工作人员笔试真题2024.docx VIP
- 危险化学品安全有关法律法规解读.pptx VIP
- 2024年湖北省恩施州恩施市三岔乡招聘社区工作者真题含答案详解.docx VIP
- 货物运输突发事件处理预案.docx VIP
- 2025年_永州冷水滩区招聘城市社区专职工作人员考试试卷[附答案].docx VIP
- 妊娠合并系统性红斑狼疮护理查房.pptx VIP
文档评论(0)