Compartilhar via


MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) Método

Definição

Retorna um assembly de um determinado nome de assembly.

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

Parâmetros

context
MetadataLoadContext

O objeto de contexto de carregamento de metadados que representa o universo fechado de objetos Type carregados para fins somente de inspeção.

assemblyName
AssemblyName

O nome do assembly.

Retornos

O assembly para o assemblyName fornecido.

Comentários

Associar um nome de assembly a um assembly ocorre quando LoadFromAssemblyName é chamado ou quando um tipo de um assembly tem uma dependência em outro assembly. O manipulador que substitui Resolve deve usar MetadataLoadContext.LoadFromStreamou MetadataLoadContext.LoadFromAssemblyPathMetadataLoadContext.LoadFromByteArray para carregar o assembly solicitado e retorná-lo.

Para indicar a falha ao localizar um assembly, o manipulador deve retornar null em vez de gerar uma exceção. null Retornar confirma a falha para que tentativas futuras de carregar esse nome falhem sem invocar novamente o manipulador.

Se o manipulador gerar uma exceção, a exceção será passada para o aplicativo que invocou a operação que disparou a associação. O MetadataLoadContext não o capturará e nenhuma associação ocorrerá.

O manipulador geralmente não será chamado mais de uma vez para o mesmo nome, a menos que dois threads corram para carregar o mesmo assembly. Mesmo nesse caso, um resultado vencerá e será atomicamente associado ao nome.

O MetadataLoadContext executa intencionalmente nenhuma correspondência ref-def no assembly retornado, pois o que constitui uma correspondência ref-def é uma política. É também o tipo de restrição arbitrária que MetadataLoadContext se esforça para evitar.

O MetadataLoadContext não pode consumir assemblies de outros contextos de carregamento de metadados ou de outros provedores de tipo (como o próprio sistema de reflexão do runtime subjacente). Se um manipulador retornar um assembly desse tipo, o MetadataLoadContext gerará um FileLoadException.

Aplica-se a