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);
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.LoadFromAssemblyPath、またはMetadataLoadContext.LoadFromByteArrayを使用して、要求されたアセンブリを読み込んで返す必要があります。

アセンブリが見つからない場合、ハンドラーは例外をスローするのではなく、 null を返す必要があります。 nullを返すとエラーがコミットされるため、後でその名前を読み込もうとすると、ハンドラーを再呼び出さずに失敗します。

ハンドラーが例外をスローすると、バインディングをトリガーした操作を呼び出したアプリケーションに例外が渡されます。 MetadataLoadContextはそれをキャッチせず、バインディングは行われません。

2 つのスレッドが同じアセンブリを読み込む競合しない限り、ハンドラーは通常、同じ名前に対して複数回呼び出されることはありません。 その場合でも、1 つの結果が勝ち、名前にアトミックにバインドされます。

MetadataLoadContextは、ref-def 一致を構成するものがポリシーであるため、返されたアセンブリに対して意図的に ref-def 照合を実行しません。 また、 MetadataLoadContext が避けるために努力している任意の制限の一種でもあります。

MetadataLoadContextは、他のメタデータ読み込みコンテキストまたは他の型プロバイダー (基になるランタイム独自のリフレクション システムなど) のアセンブリを使用できません。 ハンドラーからこのようなアセンブリが返された場合、 MetadataLoadContextFileLoadExceptionをスローします。

適用対象