• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
日出而作,日落而息,何必想太多.......
人生,还不如一张白纸来的自由。 Themusic.kh
博客园    首页    新随笔    联系   管理    订阅  订阅
类型初始值设定项引发异常

  问题是这样嘀:
项目采用了三层架构和工厂模式,并借鉴了PetShop的架构,因为这个项目也是采用分布式的数据库,目前只有三个数据库,主要出于提高访问性能考虑。
原来是按照网上对PetShop的介绍来给各项目添加引用的。
1、Web 引用 BLL。 
     2、BLL 引用 IDAL,Model,使用DALFactory创建实例。 
     3、IDAL 引用 Model。  
     4、Model 无引用。  
     5、DALFactory 引用IDAL,通过读取web.config里设置的程序集,加载类的实例,返回给BLL使用。  
     6、SQLServerDAL 引用 Model和IDAL,被DALFactory加载的程序集,实现接口里的方法。
    问题就出在这里了。顶!
    按照PetShop的架构,是DALFactory程序集里通过反射创建针对特定数据访问层里的对应类实例,这样BLL调用接口时就知道调用这个对应类实例里的实现方法。
    而反射动态加载程序集是通过这种方法 Assembly.Load("程序集").CreateInstance("命名空间.类"),其中的“程序集”读取的是Web层bin文件夹下对应的dll,即反射加载的程序集dll在Web层的bin文件夹必须有,不然就会出现如题的错误。问题解决了!
    出现这种错误的另两种情况,这也是在网上看到的,一起写下来。
    一、Web.config配置错误。
          在DALFactory程序集里的DataAccess类里,通过
          private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
          来获得程序集的名称的。
          在Web.config里我的配置如下:
          <appSettings>
          <add key="WebDAL" value="PDMS.SQLServerDAL"/>
          </appSettings>
    二、程序集名称和默认命名空间错误。
          在各个程序集右键--属性,看看程序集名称和默认命名空间有没有写错。这个问题也可能导致如题的错误~~
    
 

posted on 2009-09-27 13:17  /Themusic.kh  阅读(987)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3