序列化与反射 .pptx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
序列化与反射 回顾 对自定义类的对象排序,需要实现哪个接口? 比较两个对象使用哪个接口? 理解序列化 / 反序列化概念 能够使用序列化/反序列化保持和恢复对象状态 理解反射的概念 理解程序集的概念 本章目标 扩展配置信息 class Profile { public Profile() { } //频道集合 public List<FeedBase> Feeds = new List<FeedBase>(); //、、、 //代理服务器信息 public bool EnableProxy; public string ProxyName = null; public string ProxyPort = null; public string ProxyUserId = null; public string ProxyUserPwd = null; //系统语言 public UILanguage UILanguage; } 修改Save和Load方法 //写入是否配置代理服务器 sw、WriteLine(Pro()); //…写入增加的配置信息 1 2 //读入是否配置代理服务器 Pro = Boolean、Parse(sr、ReadLine()); //读入代理服务器IP Pro = sr、ReadLine() 修改保存配置信息的类 扩展的麻烦 添加更多的配置信息 需要编写大量重复繁琐的代码 每次增加配置信息都要修改 如何幸免频繁的修改Save/Load方法? 神奇的方式 [Serializable] abstract class FeedBase 存储信息的类都加入该标记 using System、Runtime、Serialization、Formatters、Binary; 下面的类引入一个命名空间 演示示例1 MyNewsReader public void Save() { = new ("pro", ); BinaryFormatter bf = new BinaryFormatter(); bf、Serialize(, Profile); (); } public void Load() { = new ("pro", ); BinaryFormatter bf = new BinaryFormatter(); Profile = (Pro(); (); } 修改Save和Load方法 这种方式称为序列化与反序列化 什么是序列化 Profile对象 界面语言:英语 RssFeed对象 存储 介质 存储 序列化是将对象的状态存储到特定存储介质中的过程 … 代理服务器 特性 [Serializable] abstract class FeedBase 标识这个类是可序列化的 可序列化就是这个类的一个特性 描述性关键字 对程序中的元素如:类、字段、方法、属性 命名时以Attribute结尾: SerializableAttribute 使用时省略Attribute public sealed class SerializableAttribute 特性事实上是一个类 class Program { [Obsolete("不要使用旧的方法, 请使用新的方法", true)] static void Old() { } static void New() { } public static void Main() { Old(); } } 演示示例2 MyAttribute 使用序列化 = new ("pro", ); BinaryFormatter bf = new BinaryFormatter(); bf、Serialize(, Profile); [Serializable] abstract class FeedBase 要存储的对象标记为可序列化,包括他的父类和属性的类 使用二进制方式存储对象 二进制格式化器 将对象以二进制方式格式化为流 Serialize ( Stream serializationStream, Object graph) 流 对象 Serialize的用法: 序列化的过程 格式化程序 对象可否序列化 子类成员 可否序列化 将对象格式化 写入存储介质 异常退出 序列化对象中的子类成员 Y Y N N 反序列化 把Profile对象存储成文件,如何取出来呢? 读取 反序列化则是从特定存储介质中的数据重

文档评论(0)

180****0501 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档