MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.