关于Assembly.Load(path).CreateInstance
来源:互联网 发布:轻量级c语言ide 编辑:程序博客网 时间:2024/04/30 14:03
今天看到代码 有关
Assembly.Load(path).CreateInstance
开始没怎么理解,大概了解是一个关键实例过程
baidu了下
有些朋友在做基于接口和工厂模式的三层架构示例项目代码时,经常会在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://blog.sina.com.cn/s/blog_553852910100fsmf.html
- 关于Assembly.Load(path).CreateInstance
- 工厂模式 Assembly.Load(path).CreateInstance 出错解决方法
- 工厂模式的Assembly.Load(path).CreateInstance(className)出错解决方法
- 关于反射Assembly.Load("程序集").CreateInstance("命名空间.类")
- 关于反射Assembly.Load("程序集").CreateInstance("命名空间.类")
- 工厂模式生成构造函数带参数的对象时的解决办法(Assembly.Load(path).CreateInstance)
- C#反射中Assembly.Load及Assembly.Load.CreateInstance 方法
- 关于Assembly.CreateInstance()与Activator.CreateInstance()方法的区别
- 关于反射中Assembly.CreateInstance()与Activator.CreateInstance()方法
- 关于Assembly.CreateInstance()与Activator.CreateInstance()方法的区别
- 关于程序集Assembly.Load(path)的一些注意事项
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射之一(Assembly.Load及Assembly.Load.CreateInstance方法介绍)
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射中Assembly.Load及Assembly.Load.CreateInstance方法介绍
- C#反射之一(Assembly.Load及Assembly.Load.CreateInstance方法介绍)
- 对比两个CSV 文件是否相同(方法一)
- apt源更新方法
- .net 的新手
- 请教OFFLINE数据库如何删除
- js提交后关闭子窗口
- 关于Assembly.Load(path).CreateInstance
- 调试Release发布版程序的Crash错误(一)
- 调试Release发布版程序的Crash错误(二)
- android下如何通过jni监控wifi网络连接、dhcpcd执行和power电源控制
- 调试Release发布版程序的Crash错误(三)
- 怎么设置能在IIS6内设置显示错误信息?
- 调试Release发布版程序的Crash错误(四)
- 调试Release发布版程序的Crash错误(五)
- 调试Release发布版程序的Crash错误(六)