MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) 方法

定义

根据给定程序集名称返回程序集。

public:
 abstract System::Reflection::Assembly ^ Resolve(System::Reflection::MetadataLoadContext ^ context, System::Reflection::AssemblyName ^ assemblyName);
public abstract System.Reflection.Assembly Resolve (System.Reflection.MetadataLoadContext context, System.Reflection.AssemblyName assemblyName);
public abstract System.Reflection.Assembly? Resolve (System.Reflection.MetadataLoadContext context, System.Reflection.AssemblyName assemblyName);
abstract member Resolve : System.Reflection.MetadataLoadContext * System.Reflection.AssemblyName -> System.Reflection.Assembly
Public MustOverride Function Resolve (context As MetadataLoadContext, assemblyName As AssemblyName) As Assembly

参数

context
MetadataLoadContext

元数据加载上下文对象,表示为仅供检查目的而加载的 Type 对象的封闭范围。

assemblyName
AssemblyName

程序集的名称。

返回

提供的 assemblyName 的程序集。

注解

当调用 时或一个程序集中的类型依赖于另一个程序集时 LoadFromAssemblyName ,将程序集名称绑定到程序集。 重写的 Resolve 处理程序应使用 MetadataLoadContext.LoadFromStreamMetadataLoadContext.LoadFromAssemblyPathMetadataLoadContext.LoadFromByteArray 来加载请求的程序集并返回它。

若要指示未能找到程序集,处理程序应返回 null 而不是引发异常。 null返回 将提交失败,以便将来加载该名称的尝试将失败,而无需重新调用处理程序。

如果处理程序引发异常,则异常将传递到调用触发绑定的操作的应用程序。 MetadataLoadContext不会捕获它,并且不会发生绑定。

处理程序通常不会多次调用同一名称,除非两个线程争用加载同一程序集。 即使在这种情况下,一个结果也会获胜,并且以原子方式绑定到名称。

有意 MetadataLoadContext 不对返回的程序集执行 ref-def 匹配,因为构成 ref-def 匹配的是策略。 这也是努力避免的任意限制 MetadataLoadContext

MetadataLoadContext不能使用来自其他元数据加载上下文或其他类型提供程序的程序集, (例如基础运行时自己的反射系统) 。 如果处理程序返回此类程序集,则会MetadataLoadContextFileLoadException引发 。

适用于