Assembly.GetTypes() - 获取加载失败的类型

本文关键字:加载 失败 类型 获取 GetTypes Assembly | 更新日期: 2023-09-27 18:29:56

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

该异常有一个 Types[] 属性,该属性列出了

成功加载的类型,还有一个 LoaderExceptions[] 属性,其中列出了加载失败的类型的异常。

我的问题:如何获取与加载器异常相对应的类型本身?

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

Assembly.GetTypes() - 获取加载失败的类型

这是不可能的。 CLR 无法创建Type对象,这就是您获得LoaderExceptions集的原因。 根本没有Type对象来描述加载失败的Type

此错误

主要发生在从某个位置加载的 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;
      }
}