zoukankan      html  css  js  c++  java
  • DbToCodeDemo示例项目源码DALFactory无法反射创建类实例的常见错误说明

           有些朋友在做我提供的基于接口和工厂模式的三层架构示例项目代码时,经常会在DALFactory类厂部分出现无法反射创建类示例的错误。就网友来信询问最多的情况,在此作一个统一说明,如果你也遇到了同样的问题,请参考。

     DALFactory源码:        
    string path = System.Configuration.ConfigurationSettings.AppSettings["DAL"];//从web.config里获得数据层的程序集名
    string CacheKey = path+".SysManage"; //程序集+类名,得到类的类型全名
    object objType = DataCache.GetCache(CacheKey);
    if (objType == null)
    {
     try
     {
      objType = Assembly.Load(path).CreateInstance(CacheKey); // 经常出错行  
      DataCache.SetCache(CacheKey, objType);// 写入缓存
     }
     catch(System.Exception ex)
     {
      string str=ex.Message;
     }
    }
    return (AdDesktop.IDAL.ISysManage)objType;

    错误说明:
    1.每一层是否是独立的程序集(也就是独立的项目)
      因为Assembly.Load(path)这里的path必须是一个程序集的名称,而不是类命名空间的名称。

    2.请检查数据层是否实现了接口

      SQLServerDAL下面的具体类是否实现了接口的定义,如:
     

    3.请检查程序集名称和命名空间不一致
      因为Assembly.Load(path)这里的path必须是一个程序集的名称
      CreateInstance(CacheKey)这里的CacheKey其实是需要反射的类型全名(包括命名空间的全路径)。
     所以,尽量让程序集名称和命名空间一致,这样的得到的类型全名=程序集名称+类名。
     否则,你需要把CacheKey换成实际的类型全名。
           

    4.请检查BLL层是否添加了SQLServerDAL的项目引用
           

      如果你发现还有其他问题,可以回贴,让大家都学习一下。


    最新版下载:http://www.maticsoft.com/softdown.aspx


  • 相关阅读:
    win7下的vxworks总结
    ubuntu 无法获得锁 /var/lib/dpkg/lock
    项目中用到了的一些批处理文件
    win7下安装 WINDRIVER.TORNADO.V2.2.FOR.ARM
    使用opencv统计视频库的总时长
    January 05th, 2018 Week 01st Friday
    January 04th, 2018 Week 01st Thursday
    January 03rd, 2018 Week 01st Wednesday
    January 02nd, 2018 Week 01st Tuesday
    January 01st, 2018 Week 01st Monday
  • 原文地址:https://www.cnblogs.com/ltp/p/333295.html
Copyright © 2011-2022 走看看