DbToCodeDemo示例项目源码DALFactory无法反射创建类实例的常见错误说明

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

DbToCodeDemo示例项目源码DALFactory无法反射创建类实例的常见错误说明

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的项目引用。

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

LTP.Net代码自动生成器 V1.9.6下载:http://litianping.bokee.com/inc/DbToCode.rar

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航