关于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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宇飞来手机锁了怎么办 宇飞来手机忘记密码怎么办 vivo手机突然开不了机怎么办 苹果六关不了机怎么办 微信老是无响应怎么办 打游戏被骂了怎么办 微信运动跳转排行榜失败怎么办 小恩爱账号忘了怎么办 华为账号更换后游戏账号怎么办 注册游戏账号需要身份证怎么办 英雄联盟被裁决了怎么办 百度网盘密码重置不了怎么办 sap密码输入被锁怎么办 dnf二级密码错10怎么办 大网卡网速慢了怎么办 小米路由器无线速度慢怎么办 小米手机无线速度慢怎么办 电脑网卡驱动没了怎么办 电脑显示网卡驱动不正常怎么办 微信别人拒收消息怎么办 电脑无线网卡速度慢怎么办 网吧吃鸡更新慢怎么办 手机号注册不了微信怎么办 小米账号密码忘了怎么办 小米手机账号密码忘了怎么办 华为手机账号密码忘记了怎么办 老年机开不了机怎么办 天谕没有顺网登陆怎么办 苹果密保问题忘了怎么办 密保手机没用了怎么办 qq密保手机没用了怎么办 手机开机按钮坏了怎么办 改了账号游戏角色消失怎么办 华为开机键坏了怎么办 抖音账号已重置怎么办 抖音账号被重置怎么办 吃鸡账号密码忘了怎么办 微信只记得账号忘了手机号怎么办 红米3开机键失灵怎么办 晚自习教室有许多虫子怎么办 泰迪吃草又呕吐怎么办