今天在学习插件系统设计的时候遇到一个问题:“ System.Reflection.ReflectionTypeLoadException: 无法加载一个或多个请求的类型。
于是百度一下,很多内容都差不多,摘抄一个:
------------------------------
于是坐下来仔细一想,自己只是改了接口,多了个方法,重新生成解决方案,没有错误,但是在去反射继承这个接口的dll时忘了替换掉原来的这几个文件,反射时原来的DLL少了一个方法,这样反射时就会错误。把重新生成的DLL复制到反射的目录下,结果问题解决了,记下来,以后出现这个问题好去解决^o^!
------------------------
重新拷贝了一份还是不行,于是也静静地想了半天,才发现因为是随便测试一下,所以在建程序时,把接口在宿主中建立了,后来觉得不妥,又把这个文件拖动到新建的类库里。而在宿主中声明时没有加入限定词(命名空间)所以结果是插件里与宿主里用的接口内容虽然是一样的。但命名空间是不一样的。故出现上述问题。
唉,用以前一位同事的话说就是自己给自己下绊把自己拌倒,哈哈。挺绕口的。看来以后真的要多加注意了!