重构之路 柳暗花明

         经过一段时间的学习,查阅各种资料。询问高手,对于机房收费系统的代码编写渐入佳境,同一时候在遇到问题后也不再茫然失措,而是静下心来去找到问题的根源。进而找到解决的办法。

         在使用泛型集合作为函数的返回值的实践中,遇到了一个非常普遍的问题,那就是在将DataTable类型的返回结果转换为以实体类型为集合元素的泛型集合List的过程中,因为数据类型的转换导致的错误。详细例如以下图所看到的:

         我们能够看到错误提示说的是Decimal类型的对象无法转换为Double类型,一開始我并知道这个问题的解决办法,点击“获取此异常的常规帮助”,能够看到以下的提示:

        

         看了半天还是没能知道什么意思。于是就找用过泛型集合的人问了问是怎么个情况,人家说是在向实体类型转换的时候,因为数据类型不一致导致的,也没说究竟在哪出了问题。我想既然是decimal无法转换为double类型,那么就不用double类型的属性,因此找到本次要转换的目标实体类型QueryBalanceEntity,查看里面各个属性的数据类型,发现仅仅有属性Balance是double类型的。于是将其改成了decimal类型,然后从新编译,问题攻克了,可是紧接着又发现了还有一个异常,例如以下图:

        

         返回结果中少了一个数据项,使用断点逐步调试,没能发现问题的根源,数据库中明明有数据。可是却显示不出来,在将返回结果传递到U层的过程中有一个将DataTable的换成List的步骤,因此我要看看班级的信息是否在Datatable中,所以在代码中加了一句输出DataTable中对应值的语句例如以下:

         结果班级的信息的确是返回来了,可是没有显示出来,肯定是泛型集合的使用出了问题。因此就打开数据库进行查看,发现实体类型QueryBalanceEntity中的属性班级的名称是ClassName,而在数据库中字段名称是class,根本不一致,鉴于class在编程语言中是keyword,所以就把数据库的字段名称改成了classname。例如以下:

        

         这样数据库中的字段和实体类中的属性名称相应起来,才干够顺利将Datatable类型的的数据结构转换为List类型的数据结构,方便使用。

         对于泛型集合的使用。并没有过多的去研究,而是直接将转换函数拷贝过来,问清楚參数的意义和用法,就可以在系统中使用,这是最快的学习方式。在使用中学习,而不是先研究半天理论,完了之后还是不知道怎么使用,可是在使用完了之后要回过头了去总结。这样才是真正的高效学习。

原文地址:https://www.cnblogs.com/gcczhongduan/p/5279062.html