Assembly.GetTypes() - 获取无法加载的类型

时间:2012-04-04 15:44:20

标签: c# typeloadexception

当存在无法加载的类型时,Assembly.GetTypes()会抛出ReflectionTypeLoadException。

该异常有一个Types []属性,它列出了成功加载的类型,以及一个LoaderExceptions []属性,列出了无法加载的类型的异常。

我的问题:我如何获得与LoaderExceptions相对应的类型?

编辑:我实际上正在寻找无法加载的类型的名称。很抱歉有任何困惑。

2 个答案:

答案 0 :(得分:4)

这是不可能的。 CLR无法创建Type个对象,这就是为什么你得到LoaderExceptions的集合。根本没有Type对象来描述无法加载的Type

答案 1 :(得分:0)

当您从某个位置加载的Dll已在您的应用程序或父应用程序中引用时,通常会发生此错误。如果Dll已经在引用中,那么请遍历您的应用程序Assemblies

foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
{
      if (asm.ManifestModule.FullyQualifiedName.EndsWith("YourDllName.dll"))
      {
            foreach (var Type in asm.GetTypes())
            {
                  // Apply your logic here
            }                
            break;
      }
}