创建博客 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

威邦网络

www.wb168.cn

 
 
 

日志

 
 
关于我

景磊在线,是有3个技术成员、6个业务骨干共同创建的技术团队,一个程序,一个美工,还有一个负责网站优化和网站运营。承接业务:计算机维护/网络维护/网站建设/域名注册/虚拟主机/服务器托管/服务器租用以及VPS主机等业务!

LOFTER精选

未能加载文件或程序集“Com.JJHua.SQLServerDAL”或它的某一个依赖项。系统找不到指定的  

2008-12-18 10:48:37|  分类: 程序设计之ASP.NE |  标签: |举报 |字号 订阅

模仿pet shop4做了个工厂模式的简单例子,初步了解其中流程,做个总结。
一、创建项目IDAL,包含若干接口如 IOrder,是有关Order的数据库操作接口。
二、创建项目SQLServerDAL,其中包含一个Order类,继承IOrder接口,具体实现该接口中声明的若干函数。
三、创建项目DALFactory,就是一个数据库接口工厂,负责根据选择的数据库类型(在web.config中获取如<add key="WebDAL" value="Com.JJHua.SQLServerDAL"/>)来创建相应数据库操作接口实例。如下述代码:
        public static IOrder CreateOrder()
        {
            string path = "Com.JJHua.SQLServerDAL";
            string className = path + ".Index";
            return (IOrder)Assembly.Load(path).CreateInstance(className);
        }
四、创建项目BLL,负责业务逻辑实现。其中需要调用数据库操作函数的时候声明
private static IOrder iOrder = DataAccess.CreateOrder();
然后调用IOrder中声明(Com.JJHua.SQLServerDAL.Order类中定义)的函数。
上面就是一个基本的过程,其中需要注意几点:
1、数据接口工厂DALFactory中CreateOrder函数声明成static,其他有关的地方也要用static,因为此处是利用反射动态加载程序集,所以加载一次就够了,网上偶然看了资料,据说即使多次执行加载语句也只会加载一次。
2、会出现“未能加载文件或程序集“Com.JJHua.SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件”的情况。其实原因贼简单,就是无法找到该程序集,主要是没理解它运行的机制,其实如果
Assembly.Load(path).CreateInstance(className);
写成
Assembly.Load(Com.JJHua.SQLServerDAL.dll").CreateInstance(className);
就清楚了,这找的不是一个名称空间,而是在bin里的一个dll文件。而项目SQLServerDAL默认生成的dll文件的名字是SQLServerDAL.dll,于是就会出现以上的错误。那么只要在该项目属性里把程序集名称改成“Com.JJHua.SQLServerDAL“就行了。
  评论这张
 
阅读(512)| 评论(0)
推荐 转载

历史上的今天

最近读者

热度

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2014