ResolveEventArgs.RequestingAssembly 属性

定义

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

public:
 property System::Reflection::Assembly ^ RequestingAssembly { System::Reflection::Assembly ^ get(); };
public System.Reflection.Assembly? RequestingAssembly { get; }
public System.Reflection.Assembly RequestingAssembly { get; }
member this.RequestingAssembly : System.Reflection.Assembly
Public ReadOnly Property RequestingAssembly As Assembly

属性值

请求了 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 属性根据请求程序集的标识加载同一程序集的不同实现。

适用于

另请参阅