中文 | English | 帮助中心

业务咨询热线:

新闻中心
  • 公司新闻
  • 常见问题
当前位置:首页>>新闻中心新闻中心
示例项目源码无法创建对象实例的常见错误说明

2006/2/18 22:26:14     (被阅读10719次)

     有些朋友在做我提供的基于接口和工厂模式的三层架构示例项目代码时,经常会在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的项目引用
       

  查看详细讨论

 

分享到:

 

关于我们 | 诚聘英才 | 商务合作 | 常见问题 | 联系我们 | 友情链接 | 意见反馈