最近采用工厂模式反射DAL层出现一些问题,所以自己想写一下自己认为标准解决的思路和解决方法以备后用。

1.这是项目结构

2.这是DALFactory 反射代码

 #region 创建对象(不使用缓存)
/// <summary>
/// 创建对象(不使用缓存)
/// </summary>
/// <param name="AssemblyPath"></param>
/// <param name="ClassNamespace"></param>
/// <returns></returns>
private object CreateObjectNoCache(string AssemblyPath, string ClassNamespace)
{
try
{
Assembly assm = Assembly.Load(AssemblyPath);//第一步:通过程序集名称加载程序集
object objType =assm.CreateInstance(ClassNamespace);// 第二步:通过命名空间+类名创建类的实例。
return objType;
}
catch (Exception ex)
{
//LogOperate.WriteErrorLog("创建反射异常(不使用缓存)", ex);
return null;
}
}
#endregion

上面我把发射分成两步以方便进行调试:

第一步:通过程序集名称加载程序集(注意是程序集名,不是命名空间)

Assembly assm = Assembly.Load(AssemblyPath);

如果调试之后是在这一步报错:System.IO.FileNotFoundException: 未能加载文件或程序集“SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件。

那么原因有两个:

一,是你的程序集名称写错了,你的程序集名称可以通过项目—属性—应用程序 查看。

二,是在web网站或者Windows应用程序必须要引用你要反射的项目。

比如我这里的Windows应用程序是SxPM 必须要引用SQLServerDAL。如图:

第二步:通过命名空间.类名创建类的实例。

如果调试之后是这一步报错,比如你在调用实例化后的类会报未将对象引用实例 那么原因是你的类名写错了或者是命名空间写错了。

Assembly.Load(path).CreateInstance 反射出错解决办法的更多相关文章

  1. 工厂模式Assembly.Load(path).CreateInstance 反射出错解决办法

    项目结构: DALFactory 反射代码反射 //使用缓存 private static object CreateObject(string AssemblyPath,string classNa ...

  2. 关于反射Assembly.Load("程序集").CreateInstance("命名空间.类")

    关于反射Assembly.Load("程序集").CreateInstance("命名空间.类") 而不管在哪一层写这段代码其中的("程序集" ...

  3. 黄聪:C#使用Application.Restart重启程序出错解决办法

    调用 Application.Restart重启程序出错 解决办法,就是给程序的.exe文件,加上下面的设置

  4. 转:CentOS系统yum源配置修改、yum安装软件包源码包出错解决办法!

    yum安装包时报错: Could not retrieve mirrorlist http://mirrorlist.repoforge.org/el6/mirrors-rpmforge error ...

  5. CentOS系统yum源配置修改、yum安装软件包源码包出错解决办法apt.sw.be couldn't connect to host

    yum安装包时报错: Could not retrieve mirrorlist http://mirrorlist.repoforge.org/el6/mirrors-rpmforge error  ...

  6. npm中npm install 始终出错解决办法

    npm中npm install 始终出错解决办法 错误信息: C:\Windows\System32>npm install -g gulp npm ERR! Windows_NT 6.1.76 ...

  7. ARM64平台编译stream、netperf出错解决办法 解决办法:指定编译平台为alpha [root@localhost netperf-2.6.0]# ./configure –build=alpha

    ARM64平台编译stream.netperf出错解决办法 http://ilinuxkernel.com/?p=1738 stream编译出错信息: [root@localhost stream]# ...

  8. dpkg:处理 xxx (--configure)时出错解决办法,也可用于卸载软件出错的情况

    dpkg:处理 xxx (--configure)时出错解决办法今早安装nfs时出现问题,找到该文,备份留用.然后在网上找到了这片文章,按步骤走就解决了,中间会提示自动卸载一下,执行那个命令就好了,我 ...

  9. ORBSLAM2与OPENCV3.1.0出错解决办法

    用opencv3.1.0做ORBSLAM2运行一下命令时cd ORB_SLAM2 chmod +x build.sh ./build.sh出错:/usr/bin/ld: CMakeFiles/mono ...

随机推荐

  1. cocos2dx 3.x(定时器或延时动作自动调用button的点击响应事件)实现自动内测

    // // ATTGamePoker.hpp // MalaGame // // Created by work on 2016/11/09. // // #ifndef ATTGamePoker_h ...

  2. resin or tomcat .war e.g. note

    经常想在后台找WEB对应文件,做个记录 jar cvf step1.war . 命令将jsp(内含有html等数据局),等编译成war包目录下的文件有index.jps,eg.css -------- ...

  3. discuz 二次开发

    discuz 框架也算是比较流行的社区论坛框架,discuz 的基础架构采用世界上最流行的 web 编程组合 PHP + MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方 ...

  4. AJAX-----13HTML5中新增的API---FormData

    FormData 表单数据对象,这是在HTML5中新增的一个API,他能以表单对象做参数,自动的将表单的数据打包,当ajax发送数据是,发送FormData内的表单数据给后端即可 <!DOCTY ...

  5. install sublime for linux

    Download Your Free eBooks NOW - 10 Free Linux eBooks for Administrators Python API, that available f ...

  6. VS2010 支持 CSS3

    在安装Standards Update for VS2010 SP1后,VS2010中没有CSS3.0问题,以下是我的解决方法 1.首先去官网下载 CSS 3 Intellisense Schema ...

  7. 关于加权的LIS问题

    蒟蒻Zigzag正在准备联赛...... 这个算是这几天做的唯一一个值得写一写的题吧.首先LIS的N^2暴力dp应该都会写,就是F[i]=Max{F[j]}+1 那么加权的就吧后面的1换成数的权值就行 ...

  8. Android实现归属地查询功能

    实现归属地查询大体有两种方法可以实现,一种是通过归属地API进行查询,另一种是查询本地数据库.两种方法各有优劣,最好结合起来使用,我本次采用的是查询数据库的方法.首先需要从网上下载归属地数据库call ...

  9. POJ 2516:Minimum Cost(最小费用流)

    https://vjudge.net/problem/11079/origin 题意:有N个商店和M个供应商和K种物品,每个商店每种物品有一个需求数,每个供应商每种物品有一个供应量,供应商到商店之间的 ...

  10. Date类型,Boolean类型,Number类型

    1.Date类型:  1)创建Date对象:    var date=new Date();  //Date对象会把当前日期和时间保存为其初始值 2)Date对象的方法:    --这些得到的都是数字 ...