今天在学习插件系统设计的时候遇到一个问题:“System.Reflection.ReflectionTypeLoadException: 无法加载一个或多个请求的类型。
于是百度一下,很多内容都差不多,摘抄一个:
------------------------------

今天突然遇到“System.Reflection.ReflectionTypeLoadException: 无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。”这样的报错,找了好长时间,上网搜索按照他们的方法好像都不能解决问题。
   
于是坐下来仔细一想,自己只是改了接口,多了个方法,重新生成解决方案,没有错误,但是在去反射继承这个接口的dll时忘了替换掉原来的这几个文件,反射
时原来的DLL少了一个方法,这样反射时就会错误。把重新生成的DLL复制到反射的目录下,结果问题解决了,记下来,以后出现这个问题好去解决^o^!

------------------------

重新拷贝了一份还是不行,于是也静静地想了半天,才发现因为是随便测试一
下,所以在建程序时,把接口在宿主中建立了,后来觉得不妥,又把这个文件拖动到新建的类库里。而在宿主中声明时没有加入限定词(命名空间)所以结果是插件
里与宿主里用的接口内容虽然是一样的。但命名空间是不一样的。故出现上述问题。

唉,用以前一位同事的话说就是自己给自己下绊把自己拌倒,哈哈。挺绕口的。看来以后真的要多加注意了!

****

LoaderException的解决方法

一、问题描述:

利用反射机制得到程序集的所有类型,常常会出现下面的问题。代码如下:

Assembly pAssembly = System.Reflection.Assembly.LoadFile(pfilepath);

Type[] pTypes = pAssembly.GetTypes(); //运行到这个地方会弹出如下错误描述

错误描述如下:

“未处理 System.Reflection.ReflectionTypeLoadException Message="无法加载一个或多个请求的类型。有关更多信息,请检索LoaderExceptions属性。”

二、问题分析:

小弟我在一个项目中写一些类,编译生成了一个dll,利用反射机制得到了它的所有类型,运行正常。后来再加了一个类A,其继承自类B(类B位于另一
个项目中),再编译生成,一切OK。可是利用自己编写的反射工具去得到它的类型时却出现上述错误,迷惑了一阵子,心中大呼:怪哉!后来终于找到问题元凶,
请看下述解决方法。

三、解决方法:

问题的主要原因出在:跨程序集反射。

即我们需反射的A.dll的程序集引用B.dll程序集,而在反射工具项目中却不存在对B.dll程序集的引用。因此我们只需在反射工具项目中添加对B.dll的引用即可,或者将B.dll拷贝到反射工具的执行目录下。

“无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性 “之解决的更多相关文章

  1. 在选择“Add Library Package reference”时提示:无法加在一个或多个请求的类型,有关更多信息,请检索LoaderException属性

  2. 无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性

    一解决方法: 问题的主要原因出在:跨程序集反射. 即我们需反射的A.dll的程序集引用B.dll程序集,而在反射工具项目中却不存在对B.dll程序集的引用.因此我们只需在反射工具项目中添加对B.dll ...

  3. 无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。

    新建一个MVC4的项目,引用DAL后,将DAL的连接字符串考入: <connectionStrings>     <add name="brnmallEntities&qu ...

  4. wpf prism4 出现问题:无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。

    WPF Prism 框架 程序 出现 问题: 无法加载一个或多个请求的类型.有关更多信息,请检索 LoaderExceptions 属性. 1.开始以为是配置的问题,找了半天,最后原来是有个依赖类库没 ...

  5. jQuery加载一个html页面到指定的div里

    一.jQuery加载一个html页面到指定的div里 把a.html里面的某一部份的内容加载到b.html的一个div里.比如:加载a.html里面的<div id=“row"> ...

  6. tomcat启动时自动加载一个类 MyServletContextListener

    目的: 我们知道在tomcat启动后,需要页面请求进行驱动来执行操作接而响应.我们希望在tomcat启动的时候能够自动运行一个后台线程,以处理我们需要的一些操作.因此需要tomcat启动时就自动加载一 ...

  7. Tomcat启动时自动加载一个类

    有时候在开发Web应用的时候,需要tomcat启动后自动加载一个用户的类,执行一些初始化方法,如从数据库中加载业务字典到内存中,因此需要在tomcat启动时就自动加载一个类,或运行一个类的方法. 可以 ...

  8. Android 编程下 WebView 加载一个网页如何得到网页的 Cookie 值

    http://www.cnblogs.com/sunzn/archive/2013/04/03/2998113.html mWebView.setWebViewClient(new MyWebView ...

  9. JavaWeb 服务启动时,在后台启动加载一个线程

    JavaWeb 服务启动时,在后台启动加载一个线程. 目前,我所掌握的一共有两种方法,第一种是监听(Listener),第二种是配置随项目启动而启动的Servlet. 下面对这两种方法做一简单的介绍, ...

随机推荐

  1. Request请求总结

    Request.ServerVariables["Url"] 返回服务器地址 Request.ServerVariables["Path_Info"] 客户端提 ...

  2. 关于js函数中的异步编程

    大家都说js 是单线程的应用,但是随着技术的发展,js的发展已经不仅仅局限于单线程了.因为现在很多都是异步了,所谓的异步,就是类似于ajax,写了一个回调函数,当我的服务还在这个地方的时候,等着他去排 ...

  3. Stanford机器学习---第四讲. 神经网络的表示 Neural Networks representation

    原文 http://blog.csdn.net/abcjennifer/article/details/7749309 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  4. Android之开启手机系统自带铃声

    /** * 开启手机系统自带铃声 */ private void startAlarm() { mMediaPlayer = MediaPlayer.create(this, getSystemDef ...

  5. tomcat安全配置(二)

    1. JVM 1.1. 使用 Server JRE 替代JDK. 服务器上不要安装JDK,请使用 Server JRE. 服务器上根本不需要编译器,代码应该在Release服务器上完成编译打包工作. ...

  6. Windows Server 2012 GUI与Core的切换

    Server Core是在Windows Server 2008 系统上开始引入的极小的服务器安装选项,server core 的作用就是为特定的服务提供一个可执行的功能有限的低维护服务器环境,为我们 ...

  7. Linux的Cgroup<实例详解>

    为什么要有cgroup Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源.也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等.于是就 ...

  8. MQTT——安装、测试

    MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用         http://blog.csdn.net/xukai871105/article/details/39252653 ...

  9. linux ldconfig

    http://blog.csdn.net/dante_k7/article/details/7211868 ldconfig的主要用途: 默认搜寻/lilb和/usr/lib,以及配置文件/etc/l ...

  10. host

    #Google Services START209.116.186.241 0.docs.google.com209.116.186.241 0.drive.google.com209.116.186 ...