C# 如何获取缺少的程序集中包含的类型的名称

C# 如何获取缺少的程序集中包含的类型的名称,c#,.net,reflection,C#,.net,Reflection,我在ReflectionOnly上下文中加载了assemblyA,以获取有关类型及其方法的信息。至少有一个方法的返回类型是依赖项程序集B的一部分 问题是程序集B不可用且无法解决,因此引发以下FileNotFoundException: 无法加载文件或程序集“B”或其依赖项之一。 系统找不到指定的文件 这种例外是意料之中的。然而,我已经看到,Reflector可以加载类型名(这是我所需要的),即使它无法解析依赖项程序集 有人知道如何在不获取FileNotFoundException的情况下获取缺少

我在
ReflectionOnly
上下文中加载了assembly
A
,以获取有关类型及其方法的信息。至少有一个方法的返回类型是依赖项程序集
B
的一部分

问题是程序集
B
不可用且无法解决,因此引发以下
FileNotFoundException

无法加载文件或程序集“B”或其依赖项之一。 系统找不到指定的文件

这种例外是意料之中的。然而,我已经看到,
Reflector
可以加载类型名(这是我所需要的),即使它无法解析依赖项程序集

有人知道如何在不获取
FileNotFoundException
的情况下获取缺少的程序集中包含的类型名称吗

编辑:

尝试访问
ReturnType
属性时引发异常:

Type returnType = methodInfo.ReturnType;
好的。。。有一个“奇怪的”可能的解决方案,我说,它是“奇怪的”

每次尝试加载在AppDomain中找不到的类时,都会引发AppDomain.TypeResolve事件


现在。。。为了简单起见,我们暂时将多线程和多应用程序域问题分开,但是如果您向AppDomain.Current.TypeResolve添加处理程序,您可以找到缺少的类的名称。

您可以尝试使用其他库加载此程序集,比如。

你能发布一个代码示例并告诉我们哪一行抛出了异常吗?我不相信reflector使用了反射API。。。它通过直接检查IL来构建自己的代码dom。你会发现Lutz Roeder是一个非常酷的程序员。他没有使用类型,而是直接解析程序集元数据。Chuck Norris也使用IMetaDataAssemblyImport。@Hans:我不确定Lutz Roeder是否真的这么做了。出于某种原因,我认为他使用了
Mono.Cecil
:)
TypeResolve
事件未被触发。根据MSDN,“…如果在静态程序集中找不到类型,则不会发生此事件,因为运行时知道无法将类型动态添加到静态程序集中。”。看起来反射的组件是静态的。无论如何,谢谢。