关于DALFactory无法反射创建类实例的常见错误说明
来源:互联网 发布:手机淘宝如何登录卖家 编辑:程序博客网 时间:2024/05/18 02:09
今天在看Petshop的时候,老出一个错误,DALFactory类厂部分出现无法反射创建类示例的错误,类似:System.InvalidCastException: 无法将类型为“SQLServerDAL.Unit”的对象强制转换为类型“IDAL.IUnit”。找了N多地方,才解决,现把找到的些原因,一起总结如下:
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;
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必须是一个程序集的名称,而不是类命名空间的名称。
1.每一层是否是独立的程序集(也就是独立的项目)
因为Assembly.Load(path)这里的path必须是一个程序集的名称,而不是类命名空间的名称。
2.请检查数据层是否实现了接口。
SQLServerDAL下面的具体类是否实现了接口的定义,如:
1.每一层是否是独立的程序集(也就是独立的项目)
因为Assembly.Load(path)这里的path必须是一个程序集的名称,而不是类命名空间的名称。
1.每一层是否是独立的程序集(也就是独立的项目)
因为Assembly.Load(path)这里的path必须是一个程序集的名称,而不是类命名空间的名称。
2.请检查数据层是否实现了接口。
SQLServerDAL下面的具体类是否实现了接口的定义,如:
3.请检查程序集名称和命名空间不一致。
因为Assembly.Load(path)这里的path必须是一个程序集的名称
CreateInstance(CacheKey)这里的CacheKey其实是需要反射的类型全名(包括命名空间的全路径)。
所以,尽量让程序集名称和命名空间一致,这样的得到的类型全名=程序集名称+类名。
否则,你需要把CacheKey换成实际的类型全名。
因为Assembly.Load(path)这里的path必须是一个程序集的名称
CreateInstance(CacheKey)这里的CacheKey其实是需要反射的类型全名(包括命名空间的全路径)。
所以,尽量让程序集名称和命名空间一致,这样的得到的类型全名=程序集名称+类名。
否则,你需要把CacheKey换成实际的类型全名。
4.请检查BLL层是否添加了SQLServerDAL的项目引用。
我开始是web.config没有加程序集名
后来,又在第二步那出错,不过总算还是搞清楚了.呵呵!
后来,又在第二步那出错,不过总算还是搞清楚了.呵呵!
- 关于DALFactory无法反射创建类实例的常见错误说明
- DbToCodeDemo示例项目源码DALFactory无法反射创建类实例的常见错误说明
- DbToCodeDemo示例项目源码DALFactory无法反射创建类实例的常见错误说明
- 动软代码生成器中DbToCodeDemo示例项目源码DALFactory无法反射创建类实例的常见错误说明
- 动软项目DALFactory无法反射创建类实例的常见错误
- 无法反射创建类实例错误的解决
- 在用工厂模式做三层架构开发的时候 无法反射创建类实例的发现的错误
- PetShop通过DALFactory工厂类创建例出现创建对象为空的问题
- 关于反射中创建类型实例的两种方法
- 通过反射,创建类的实例
- 通过反射,创建类的实例二
- 通过反射,创建类的实例三
- istream_iterator常见的错误说明
- VC常见的错误说明
- 八、创建DALFactory
- Java反射,根据类名创建带参数的实例
- Java反射,根据类名创建带参数的实例
- Java反射,根据类名创建带参数的实例
- 在Visual Studio 2005中遇到 提示"ConfigurationSettings 已过时"
- c#中一些常用字符串处理
- long long 类型的网络字节顺序转换
- 使用C#的反射机制时遇到的问题
- VB模拟键盘操作
- 关于DALFactory无法反射创建类实例的常见错误说明
- 利用.NET中的反射机制实现IList到DataTable的转换
- 将 IList 或 IList 转换为Dataset或DataTable
- JACOB - a JAVA-COM Bridge
- 本周工作总结
- 使用JACOB进行Excel读写控制
- VS2005(c#)项目调试问题解决方案集锦
- GridView操作
- 手机AT指令集合