C#学习纪要:7月13日

时间:2021-02-16 11:48:25

7月13日  星期一     天气晴间多云

又上班啦。今天一进门,出现了两张新脸孔,一个帅哥,一个美女;一个元老,一个新人;一个技术,一个销售。哈哈,很好。那位帅哥我久闻大名了,听老板说他技术很牛,只见他一脸敦厚,言谈谦和,很不错的年轻人。那位美女暂时还没有深入接触,自我介绍Rita,呵呵,不过应该比我大几岁啊~~估计应该名花有主了,罢了罢了。

今天继续解决上星期遗留的问题吧,争取将数据库备份类做出来!

10:55----------终于解决DataContractSerializer找不到的问题了。其实很简单,只要在项目中添加引用即可。shit!

15:10---------- 万事具备了。所有需要用的代码段都测试完成了,是时候写一个完整的DataBackup了。

                            以下是备份的业务流程:

            /*备份流程
             * 1. 读出某表的所有记录,放到一个table<T>里,得到它的count,类型为int32型,将其转换成byte[4]
             *    创建一个文件,将其写入到文件的开头。
             * 2. 使用foreach语句获取数据表的所有实体类对象,将每一个类对象序列化,获得一个byte数组,求得
             *    byte数组的长度,同样是int32类型,转换成byte[4],写入到文件中,然后紧接着写入这个byte数组。
             *    每写入一个实体类对象,激发一个complete事件。
             * 3.写入每一个实体类对象,直至循环完成。
             * 4. 关闭文件

 15:52 ----------遇到一个小问题:泛型的约束,可以使用where子句来约束泛型类的继承基类。

                  泛型约束的类型: 1. where T:struct  使用结构约束,类型T必须是值类型

                                                   2. where T:class 类约束,类型T必须是引用类型

                                                   3.where T:IFoo   接口约束,类型T必须实现接口IFoo

                                                   4.where T:Foo  基类约束,类型T必须派生于Football

                                                    5. where T:new()  构造函数约束,类型T必须有一个默认构造函数

                                                  6. where T:U    这个约束表示类型T派生于泛型类型U。

17:00------------ 备份类跟恢复类初步完成,测试通过。接下来写事件。

 17:40----------- 好了,终于将进度栏也关联起来了。下一目标,保存文件对话框的bug。发现自己好容易在一些小地方出错啊。像刚才调的那个错误,原来就是类型转换(int)比四则运算优先级要高,结果算percent的时候全算0去了。真见鬼。

18:00-----------刚刚下班,刚刚修复保存文件对话框的bug。之前点击打开按钮后,文件对话框仍然存在。我将该打开按钮的响应方法设为非继承基类执行窗体的响应方法后,OK了。