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

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

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

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

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

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

適用対象