今天在学习插件系统设计的时候遇到一个问题:“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. 实战 -- Redis2.4.2集成spring3.2.2

    redis.host=... redis.port= redis.pass= redis.timeout= #最大能够保持idel状态的对象数 redis.maxIdle= #最大分配的对象数 red ...

  2. [Effective JavaScript 笔记]第43条:使用Object的直接实例构造轻量级的字典

    js对象的核心是一个字符串属性名与属性值的映射表.使用对象实现字典易如反掌,字典是可变长的字符串与值的映射集合. for...in js提供了枚举一个对象属性名的利器--for...in循环. var ...

  3. 利用LineRenderer画出一个圆,类似于lol中的攻击范围

    http://www.unity蛮牛.com/blog-5945-1409.html 本人大四狗,学unity半年有余,写此文章纯粹记录自己的心得. 废话不多说,进入主题.... 效果如图: 首先要理 ...

  4. [OpenJudge 3061]Flip The Card

    [OpenJudge 3061]Flip The Card 试题描述 There are N× Ncards, which form an N× Nmatrix. The cards can be p ...

  5. iPhone取消软件更新上边的1

    去除设置的更新+1小红点提示主要分为越狱和非越狱设备两种方法. 越狱状态下方法: 首先将你的设备进行越狱: 越狱后安装ifile(这个自行搜索安装): 用ifile打开/System/Library/ ...

  6. 2014.7建兰NOIP模拟Day1 Running

    突然间翻到着题,想想那时的我真是垃圾,这么简单的tarjan缩点+树上倍增都不会..还想了3h+.. 什么时候写了它吧...

  7. centos安装redis及php-redis扩展

    centos安装redis及php-redis扩展  Linux, WEB 七162012 今天公司同事要求在测试机上安装redis,并且要求让php安装上redis的扩展,redis是一个key-v ...

  8. BFS:Meteor Shower(POJ 3669)

         奔跑吧,傻牛 题目大意:这只Bessie的牛又要来闹事了,这次她的任务就是来躲流星雨,流星雨就是在一定时间会从天上砸到Bessie的所在的正方形区域内(Bessie在0,0的位置),然后砸下 ...

  9. 【USACO】pprime

    开始看第一眼题就觉得问题会在超时上,果然写了个小代码运行到test 9时超时了 #include <stdio.h> #include <math.h> int isprime ...

  10. HDU 1452 Happy 2004 (逆元+快速幂+积性函数)

    G - Happy 2004 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Subm ...