重构之路 峰回路转

其实敲代码的时间并不是太长,往往调试的时间很长,登录早就敲完了,可是迟迟运行不出想要的结果,甚至不能完整的从U层运行到D层,实在是让人揪心,先后请了三位高手帮我调试,愣是没有发现错误在哪里。

在今天的上午,问题有了转机,终于是将登录完整的运行下来了,也得到了预期的反馈,因此在下午的时候就再次尝试加入配置文件,没想到一个意想不到的警告信息让我相信之前的判断是正确的,于是顺藤摸瓜终于找到了问题的根源,万万没想到,一系列问题的答案竟是如此简单,让人哭笑不得。

先来分析分析报错信息,以便找到解决问题的线索。

我们可以看到出错的地方是工厂类的初始化异常,那么我们到工厂类中看看是什么地方有可能出错

工厂类中使用了反射和配置文件来生成D层的对象,因此可能出错的地方就是这两个地方,于是将配置文件的使用注释掉,直接使用字符串对AssemblyName进行赋值,程序顺利的编译过去了,但是又出现了错误如下:

我们看到还是使用配置文件的地方出错,这也印证了上个错误的根源也是配置文件,当然这只是猜测,并未见到系统报错说是配置文件的问题,请人帮忙也看了配置文件的代码,但是就是没发现哪不对,但是在今天下午尝试使用配置文件来访问数据库时,出现了如下警告信息:

于是乎,可以肯定了出错的原因就是配置文件的问题,突然想到之前曾经总结过反射+抽象工厂+配置文件使用,于是找出以前的实例,打开配置文件对照一下,瞬间明白了真相:

原来真相就是我把appSettings中的S写成了小写的s,改过来之后,程序完美的运行了。难怪高手们都说没见过这样的问题,原来是犯的错太低级,居然是拼写错误,用哭笑不得形容自己的感受实在是不为过。

之前还遇到过两个印象比较深刻的问题:

1.      未能加载文件或程序集“DAL”或其他的某一个依赖项,系统找不到指定的文件

2.      “C:\Users\sq\AppData\Local\Temp\.NETFramework,Version=v4.5,AssemblyAttributes.vb”:系统找不到指定的文件

这两个错误是大家比较常见的,也是很大可能遇到的,因此解决办法在网上就有很多了,我在这里就不再赘述了。

总之遇到问题并不是什么坏事,反而是一次很难得的机会,只是在解决之前,尤其是时间久了,就会感觉烦躁,甚至有种“以头抢地尔”的冲动。但是要相信办法总比困难多,一定会有峰回路转的那一刻。

重构之路 峰回路转,布布扣,bubuko.com

时间: 2024-11-10 03:12:10

重构之路 峰回路转的相关文章

Hybird框架UI重构之路:四、分而治之

上文回顾:Hybird框架UI重构之路:三.工欲善其事,必先利其器 上一篇文章有说到less.grunt这两个工具,是为了css.js分模块使用的.UI框架提供给使用者的时候,是一个大的xxx.js.xxx.css,但在开发时候,必须划分模块. CSS模块划分 1.variables.less 这里面是一些样式的变量.函数 例: 字体: @baseFontSize: 20px; 圆角: .rounded-corners (@radius: 5px) { border-radius: @radiu

重构之路 组合查询之传参+存储过程

上篇博文给大家一起讨论了实现组合查询的一种方法,即在U层将select语句的where子句部分组装好,赋给一个字符串变量,传到D层然后与select子句组成完整的sql语句,之后执行,返回查询结果,就是这么简单,但是博文的结尾也留下了一个疑问,这种方法的安全性有点欠佳,有没有相对好一点的办法呢? 答案是肯定的,这次我们一起来看看我实现的另一种方法.首先给大家简单介绍一下这种方法的思路,其实也比较简单,最初我是想在程序代码里写sql查询语句的,然后将组合查询的各个条件的值当做实体参数(现在实体层定

重构之路 组合查询之传递SQL字符串

既然是使用VB.NET语言对机房收费系统进行重构,那么无可避免的要去解决组合查询的问题,在VB版的实现中这是一个难点,不过大家还是依靠自己或者共同的智慧解决了这个看似复杂的问题. 如今编程的语言不同是一方面,更重要的是系统的结构不一样了,采用了三层架构去实现系统,这样一来就要考虑组合查询的在三层结构中的实现方法.当然,组合查询的核心办法是不变的,都是通过将查询的各个条件组装成SQL查询语句的where子句来实现的,问题就是这个where子句的组装在哪里完成? 如果放在U层完成,那么我们向下传递的

Hybird框架UI重构之路:五、前端那点事儿(HTML、CSS)

上文回顾 :Hybird框架UI重构之路:四.分而治之 这里讲述在开发的过程中,一些HTML.CSS的关键点. 单页模式的页面结构 在单页模式中,弱化HTML的概念,把HTML当成一个容器,BODY中显示的主体内容才是页面,一个HTML容器中可以存放1个或者多个页面,每个页面放置于section中.而一个页面(section)中必有主体内容(content),也有可能包含头部内容.底部内容,甚至一些侧滑菜单等. 所以,以我们通常看到的一个移动应用的界面中包含了顶部Title和主体内容的页面代码如

重构之路 狼烟四起

虽然已经做过一遍机房收费系统,但是要用面向对象技术和分层技术对其进行重构,的确是一件不容易的事,从最开始的需求分析,到使用UML对机房收费系统进行建模,再到后期的代码实现以及文档编写,无一例外的让人觉得纠结甚至是虐心.为什么会有这样的赶脚?我们来一探究竟. 首先是需求分析,虽然大家都已经做过一遍了,但是我不敢保证你们都能很好的理解这个系统的需求,因此这是一个纠结点.其次就是画图,必要的图有用例图,系统的包图,以及各个包里的类图和时序图,这些图对后期的代码编写十分重要,因此必须要画的. 在使用面向

Hybird框架UI重构之路:六、前端那点事儿(Javascript)

上文回顾 :Hybird框架UI重构之路:五.前端那点事儿(HTML.CSS) 这里讲述在开发的过程中,一些JS的关键点. 换肤 对于终端的换肤,我之前一篇文章有说了我的想法. 请查看:http://www.cnblogs.com/lovesong/p/4122262.html iscroll的问题 1.使用iscroll的页面里面有表单元素,当键盘弹出再缩回后,页面拖不到最顶地方. 这个在android上总出现,使用的iscroll版本是4.2.5. 这原来是个很棘手的问题,导致了有input

Hybird框架UI重构之路:三、工欲善其事,必先利其器

上篇回顾:Hybird框架UI重构之路:二.事出有因 工欲善其事,必先利其器,事是重构的目标,器是开发环境. 这篇文章将讲述重构时的UI框架的目录结构,且需要使用的开发工具. 目录结构 demo : 开发框架的模板(单页模式) demo-muti : 开发框架的模板(多页模式) demo-scene : 示例模板.一个完整的示例,目的是给使用者稍作修改就可以使用在项目上. demo-template : 给使用者使用的开发模板. demo-whole : 可在PC上演示的示例模板 dist :

Hybird框架UI重构之路:二、事出有因

上篇回顾:Hybird框架UI重构之路:一.师其长技以自强 一切的重构都是有原因的,或许为了更快速度.更好体验.更快捷开发等,于是就有了自己的开发目标,简单看看未重构前UI("中国移动式"风格). 上一篇文章说明调查了这么多类似框架,对比了他们的特点,而比对自身UI,也是存在可优化的地方,于是有了下面几点目标(仅仅UI框架方面,不涉及原生部分). (1)规范开发 1.SVN版本控制.之前的UI框架部分是没有进行svn版本控制的,于是会导致个问题——有些文件在多次修改后,连当初的开发者都

Android 项目重构之路:实现篇

前两篇文章<Android项目重构之路:架构篇>和<Android项目重构之路:界面篇>已经讲了我的项目开始搭建时的架构设计和界面设计,这篇就讲讲具体怎么实现的,以实现最小化可用产品(MVP)的目标,用最简单的方式来搭建架构和实现代码. IDE采用Android Studio,Demo实现的功能为用户注册.登录和展示一个券列表,数据采用我们现有项目的测试数据,接口也是我们项目中的测试接口. 项目搭建 根据架构篇所讲的,将项目分为了四个层级:模型层.接口层.核心层.界面层.四个层级之