修改Brian 的借口生成器为使用序列化的 Excuse 对象的二进制文件而不是使用文本文件。
①让Excuse 类可以被序列化
给Excuse 类添加 [Serializable] 特性来使得它可以被序列化。还有,你需要添加下面这一行:
using System.Runtime.Serialization.Formatters.Binary;
②修改Excuse.Save ()方法来序列化借口
让Save ()方法打开文件并把自己序列化,而不要再让它用 StreamWriter 来写出文本了。你需要搞明白当前类如何序列号自身。
③修改Excuse.OpenFile ()方法来反序列化一个借口
你需要创建一个临时Excuse 对象来从文件读取反序列化的对象,然后把其字段复制进当前类实例中去。
④现在修改窗体让它使用新的文件后缀名
需要对窗体做的修改很少。由于我们不再用文本文件了,就不应该再用.txt 文件名后缀了。修改对话框,修改默认文件名和搜索文件夹的代码这样就可以操作 *.excuse 文件了。
对了!你的代码很容易修改,因为它封装良好。
一个类对外隐藏内部的操作并且只暴露需要暴露的行为,这样的类就叫做封装良好的类。窗体毫不知道借口是如何存储进文件中去的。窗体只需要传递一个文件名进去,然后Excuse 类将会处理余下的一切。这样,如果你要修改 Excuse 类处理文件的方式的话就很简单了。类封装的越好,后续工作中就越容易修改。还记得封装是四个面向对象核心原则之一吗?这里的例子就说明了运用那些原则会如何的使得你的编程便容易。