最近采用工厂模式反射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. lua weak table 概念解析

    lua weak table 经常看到lua表中有 weak table的用法, 例如: weak_table = setmetatable({}, {__mode="v"}) 官 ...

  2. 必须使用"角色管理工具"安装或配置microsoft.net framework 3.5

    windows 2008 R2 安装.net framework 3.5报错 : 解决方法: (1)打开服务器管理器 (2)右击左侧功能——>添加功能 (3)向导中勾选.NET Framewor ...

  3. cell长按出错

    错误的原因: *** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reaso ...

  4. paper 96:计算机视觉-机器学习近年部分综述

    计算机视觉和机器学习领域 近两年部分综述文章,欢迎推荐其他的文章,不定期更新.   [2015]   [1].    E.Sariyanidi, H. Gunes, A. Cavallaro, Aut ...

  5. SQL中的charindex函数与reverse函数用法

       ----------------------首先介绍charindex函数-----------------------------                                ...

  6. Maps for Developers

    苹果官方文档: Give your apps a sense of place with maps and location information. Present maps with custom ...

  7. Dundas控件的X轴字体竖排版

    dundas 坐标轴的问题 x轴的值怎么让他竖排显示?我晓得dundas可以旋转显示,但是不是我要的效果 如下 ---------------------------------------  第   ...

  8. Dynamics AX 2012 R2 为运行失败的批处理任务设置预警

    我们主要有两种类型的系统监视:环境健康监视和性能监视. 环境健康监视一般对系统性能影响非常小,是为了提醒潜在的问题. 性能监视通常更有侵入性.监视期间,添加一个负载到环境.因此,它可以回答特定的问题或 ...

  9. Linux命令学习整理。

    http://www.cnblogs.com/suliuer/p/5448747.html 本文主要包括两部分,一是Linux基础命令的总结:二是总结一些常用的命令知识点. 一.基础总结 学习Linu ...

  10. <转>linux crontab 定时任务

    基本格式 : * * * * * command 分 时  日  月  周    命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 ...