ResolveEventArgs.RequestingAssembly 属性

定义

获取正在解析其依赖项的程序集。

C#
public System.Reflection.Assembly? RequestingAssembly { get; }
C#
public System.Reflection.Assembly RequestingAssembly { get; }

属性值

请求了 Name 属性指定的项的程序集。

注解

此属性返回的程序集是无法解析属性指定的 Name 项的程序集,因为该项不存在于该程序集中、其加载的任何依赖项或加载程序可以通过探测找到的任何依赖项中。

例如,假设当前程序集使用 Assembly.LoadFile 方法从探测路径外部的目录加载程序集 A,以便使用类 CA。 进一步假设类 CA 在程序集 B 中使用类 CB,并且程序集 A 具有对程序集 B 的编译时引用,该引用也位于探测路径之外。 当当前程序集尝试实例化 CA 时,加载程序会尝试解析对程序集 B 的引用。但是,由于程序集 A 是使用 Assembly.LoadFile 方法加载的,因此加载程序无法解析依赖项。 如果事件有处理程序 AppDomain.AssemblyResolve ,则会引发 事件,并且 RequestingAssembly 生成的 ResolveEventArgs 对象的 属性包含程序集 A,因为程序集 A 是缺少依赖项的程序集。

属性的 RequestingAssembly 语义会有所不同,具体取决于加载请求程序集的方式:

  • 加载上下文:属性的值可能是 null。 加载上下文与负载顺序无关,请求程序集的标识不一定有意义。 当调用 方法且请求程序集或其任何依赖项不知道指定类型时 Type.GetType ,将发生非 null 示例。

  • 从上下文加载:属性可用作探测提示,但事件处理程序不应获取给定程序集名称的多个请求。

  • 没有上下文 (也就是说,请求程序集是使用 Assembly.LoadFile 方法加载的,或者作为字节流加载的,或者在混合模式下) :处理程序可以使用 RequestingAssembly 属性根据请求程序集的标识加载同一程序集的不同实现。

适用于

产品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

另请参阅