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

时间:2011-08-13 21:19:56

标签: c# .net reflection

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

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

  

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

这种例外是预期的。但是,我已经看到Reflector CAN加载类型名称(这是我需要的),即使它无法解析依赖项汇编。

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

修改

尝试访问ReturnType属性时抛出异常:

Type returnType = methodInfo.ReturnType;

2 个答案:

答案 0 :(得分:1)

您可以尝试使用其他库来加载此程序集,例如Mono.Cecil

答案 1 :(得分:0)

好的......有一种“奇怪的”可能的解决方案,我说,这很“奇怪”。

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

See the MSDN page

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