一点一点学架构(四)—Spring.NET错误Cannot Resolve Type……
背景
在搭建完项目框架之后,当我利用单元測试来測一条线时。出现了下面错误:
Cannot resolve type[……]for object with name ‘ButtonBll’ defined in config.
看到问题描写叙述之后首先去检查了自己配置文件里的配置:
<!--B层实现注入-->
<object id="ButtonBll" type="ITOO.UIQueryProperties.BLL.ButtonBll,ITOO.UIQueryProperties.BLL" singleton="false"/>
细致核对了类名,程序集名称。确定配置没有问题。
这是哪里的问题呢?
原因分析
这是最初版本号的架构图
图中红色勾出来的地方是三个工厂,这里用到了设计模式中的抽象工厂+反射+配置文件。
架构图演变
去掉了三个工厂,取而代之的是Spring.NET中的IOC容器。我们知道。IOC容器就像是一个对象制造工厂。
那么说这些有什么用呢?
还记得在用抽象工厂+反射+配置文件时。有个常常出的错误吗?
未能载入文件或程序集“DAL”或它的某一个依赖项。系统找不到指定文件。
当时的解决方式是将DAL层的生成路径改到UI层的bin\Debug目录下。详细内容可參考《应用反射+配置文件+抽象工厂时出现的错误和原因分析 》
所以,尽管这两次错误的提示不一样,可是根源还是一样的:没有把实现层类库的生成路径改到应用程序启动层。
解决
这里须要我们把BLL层和DAL层的生成路径都改到 WCFService层的bin\Debug文件下。(假设要进行单元測试,单元測试层引用的dll文件都来自于WCFService层bin\Debug中的文件就可以)
总结
前后两次问题出如今不同的情景下,形式变了,可是道理没变。不管是学习还是解决这个问题,我们都应该学会举一反三。
一点一点学架构(四)—Spring.NET错误Cannot Resolve Type……的更多相关文章
- 一点一点看JDK源码(四)java.util.ArrayList 中篇
一点一点看JDK源码(四)java.util.ArrayList 中篇 liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 在前篇中 ...
- 一点一点学ASP.NET系列
转自:http://www.cnblogs.com/stwyhm/archive/2006/08/10/473075.html 做开发近两年了,自认为自己还算是个知道要上进的人,每天不停地学习,不停地 ...
- 一点一点学写Makefile(3)-增加第三方库和头文件
我们在写代码的时候不一定都是有自己来完成,一个工程中会大量使用一些比较优秀的动态库.静态库等,我们在使用这些库完成所有的代码后,需要在编译的时候将这些库使用的头文件添加到我们的工程上,将他的库文件也添 ...
- 一点一点看JDK源码(〇)
一点一点看JDK源码(〇) liuyuhang原创,未经允许进制转载 写在前面: 几乎所有的大神都会强调看源码,也强调源码的重要性: 但是如何看源码,源码看什么?看了什么用?看了怎么用? 困扰很多人, ...
- SaaS 系统架构,Spring Boot 动态数据源实现!
这段时候在准备从零开始做一套SaaS系统,之前的经验都是开发单数据库系统并没有接触过SaaS系统,所以接到这个任务的时候也有也些头疼,不过办法部比困难多,难得的机会. 在网上找了很多关于SaaS的资料 ...
- 一点一点看JDK源码(一)Collection体系概览
一点一点看JDK源码(一)Collection体系概览 liuyuhang原创,未经允许进制转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 Collection为集 ...
- 一点一点看JDK源码(三)java.util.ArrayList 前偏
一点一点看JDK源码(三)java.util.ArrayList liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 ArrayLi ...
- 一点一点看JDK源码(五)java.util.ArrayList 后篇之Spliterator多线程遍历
一点一点看JDK源码(五)java.util.ArrayList 后篇之Spliterator多线程遍历 liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看J ...
- 一点一点看JDK源码(六)java.util.LinkedList前篇之链表概要
一点一点看JDK源码(六)java.util.LinkedList前篇之链表概要 liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.什么 ...
随机推荐
- luogu1226 取余运算||快速幂
题目大意:快速求$a^b\mod p$的值. 根据二进制,令$b=\sum t_k\cdot 2^k, t\in \{0,1\}$,那么$$a^b=a^{\sum t_k\cdot 2^k}\mod ...
- c25---条件编译
// // main.c // 条件编译(宏定义是简单的替换,要给参数和结果都加括号) #include <stdio.h> #define SCORE 90 #define DEBUG ...
- spring框架spring之HibernateTemplate
转自:https://blog.csdn.net/acmman/article/details/44652207
- kali 下使用 arpspoof 实现 ARP 欺骗
ARP 欺骗: 一种中间人攻击,攻击者通过毒化受害者的 ARP 缓存,将网关的 MAC 替换成攻击者的 MAC ,于是攻击者的主机实际上就充当了受害主机的网关, 之后攻击者就可以截获受害者发出和接到的 ...
- 初学 Ajax(涉及 php)
一直知道 ajax 但是尚未真正了解, 这次看了慕课网的<Ajax全接触>,算是有所收获,入了个门. 需要用到php,因为 Ajax也是向服务器请求(不知道这么解释对不对), 所以还需要配 ...
- RocketMQ之消息中间件需要解决的问题
消息中间件需要解决哪些问题 1.Publish/Subscribe(发布订阅) 发布订阅是消息中间件最基本的功能 2.Message Priority(消息优先级) 在消息队列中,每条消息都有不同的优 ...
- CSS vs. JS Animation: 哪个更快
CSS vs. JS Animation: 哪个更快? CSS vs. JS Animation: 哪个更快? 基于JavaScript的动画竟然已经默默地比CSS的transition动画快了?而且 ...
- 1) 十分钟学会android--建立第一个APP,创建android项目
一个Android项目包含了所有构成Android应用的源代码文件. 本小节介绍如何使用Android Studio或者是SDK Tools中的命令行来创建一个新的项目. Note:在此之前,我们应该 ...
- 深度讲解智能硬件手机APP开发流程
常州做APP开发公司紫竹云科技分析,智能硬件产品的软件开发,除了APP和后台之外还有一个固件端的开发,由于固件是要运行产品上的,不过此时的硬件也是刚开始进行研发,所以是无法提供硬件来运行固件的.因此在 ...
- 常用MySql命令列选
常用MySql命令列选 命令 参数 含义 alter 数据库,表 修改数据库或表 backup 表 备份表 \c 取消输入 create 数据库,表 创建数据库或表 delete 表和行的表达式 ...