下面是我再使用抽象工厂+反射重构机房时,在Factoy中出现了下面一个问题:
去网上查了一下资料,发现这是一个很普遍的问题,它出现的原因主要有两种:
第一种:
加载DLL路径错误。解决办法是调整D层生成DLL的路径到UI的bin文件夹中。如下图:
反射的一个原则是:一切皆以UI层的bin文件夹中的dll名称为中心,说白一点,dll就是一个类库。我理解的反射,就是一串拼接的字符串,组成要实例化的类的名字。使用反射加载类时,默认是从UI层中的bin中找的,所以要在UI的bin文件夹下生成D层类的dll,这样才能顺利加载。
第二种:
是对第一种异常的扩张,异常名称为:未能加载文件或程序集”DAL”或它的某一个依赖项。试图加载格式不正确的程序。这个异常主要是由于引用的项目.net版本与启动的框架不同引起的。如操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题。
解决方案一:如果是64位机器,IIS——-应用程序池—高级设置——启用32位应用程序 :true。
解决方案二:修改项目属性——生成——目标平台(比如,X86\X64)