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

asp.net写的工厂模式架构web项目

利用反射工厂,动态生成程序集

其实错误原因还是在创建工厂模式,利用System.Configuration动态反射,对动态反射的理解不够清晰,造成这个错误

项目创建好,生成解决方案,全部成功,但是弹出:

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

很是奇怪
网上搜索了一下,很多人遇到这样的问题

命名空间SQLServerDAL,要与Web.config配置的名称相同
<appSettings file="Membership.config">
    <add key="WebDAL" value="SQLServerDAL"/>
    <add key="ConnectionString" value="user id=sa;password=123;Data Source=.;Initial Catalog=tb"></add>
  </appSettings>

如果不一致运行会出现上述错误
我在DALFactory内创建的反射代码
public class DataAccess
    {
        // 查找程序集
        private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
        private DataAccess() { }
        public static IHc Hc()       
        {
            string className = path + ".Hc";
            return (IHc)Assembly.Load(path).CreateInstance(className);
        }
    }

还有一种是抽象一个泛型接口方法
public class ODataAccess<T>// 创建泛型程序集,泛型接口,复用性强省去很多重复代码
    {
        private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
        public static T Get()
        {
            string className = path + "." + typeof(T).Name.Substring(1);
            object objType = Assembly.Load(path).CreateInstance(className);
            return (T)objType;
        }
    }

解决方法是对应好程序集的名称:Assembly.Load(“SQLServerDAL.dll").CreateInstance(className);通过bin文件夹下找到相应的DLL,确定其名称。

上述两个反射代码均是正确的。
只是
我程序出现的这个错误是因为我的UI层没有bin文件夹,需要建立bin文件夹,添加项目引用。把项目引用添加后,运行成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值