MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したアセンブリ名からアセンブリを返します。
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 、他のメタデータ読み込みコンテキストや他の型プロバイダー (基になるランタイム独自のリフレクション システムなど) のアセンブリを使用できません。 ハンドラーがこのようなアセンブリを返す場合、 は MetadataLoadContext を FileLoadExceptionスローします。
適用対象
.NET