三层问题集锦

1、"未能加载文件或程序集“DAL”或它的某一个依赖项。系统找不到指定的文件"上网查找时,很多解决方案都是将D层的dll手动添加进去,或者调整程序的生成路径。


三层问题集锦_第1张图片


2、异常详细信息:用户代码未处理(Exception),System.NullReferenceException: 未将对象引用设置到对象的实例。


这两个问题都是在增加了工厂和反射之后出现的,当时还不止出现这两个问题。而他们共同的解决方案都与反射有关系,因为对反射不理解,所以出现了一系列的问题。

3、反射:  

       通过System.Reflection命名空间中的类,我们可以获得有关已加载的程序集的信息。也可以使用反射在运行时创建类型实行,以及调用和访问这些事例。 反射就是通过某种中间设备获取到另一端的东西。  

反射提供了封装程序集、模块和类型的对象。程序集包含模块,而模块包含类型,类型有包含成员。 

 我们使用的形式:Assembly.Load("程序集名称").CreateInstance("命名空间.类名称")
       程序集名称就是类库属性中的程序集名称,命名空间就是类库属性中的根命名空间,类名称就是该命名空间下的类名。

反射的一个原则:一切皆以UI层的bin文件夹中的dll名称为中心。(原因很简单:.net类加载的机制就是默认从本程序集的bin文件中找,所以bin文件夹中一定要有要加载的程序集的dll)UI层中bin文件夹中dll叫什么名字AssemblyPath就使用什么名字,bin内部类的全名叫什么,className就写成什么全名。.net中的引用:加入对某个程序集的引用就能在程序集有变化时自动拷贝dll

你可能感兴趣的:(三层问题集锦)