Condividi tramite


MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) Metodo

Definizione

Restituisce un assembly da un nome di assembly specificato.

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

Parametri

context
MetadataLoadContext

Oggetto del contesto di caricamento dei metadati che rappresenta l'universo chiuso di oggetti Type caricati solo a scopo di controllo.

assemblyName
AssemblyName

Nome dell'assembly.

Restituisce

Assembly per l'oggetto assemblyName specificato.

Commenti

L'associazione di un nome di assembly a un assembly si verifica quando LoadFromAssemblyName viene chiamato o quando un tipo da un assembly ha una dipendenza da un altro assembly. Il gestore che esegue l'override Resolve deve usare MetadataLoadContext.LoadFromStreamo MetadataLoadContext.LoadFromAssemblyPathMetadataLoadContext.LoadFromByteArray per caricare l'assembly richiesto e restituirlo.

Per indicare l'errore di trovare un assembly, il gestore deve restituire null anziché generare un'eccezione. La restituzione null esegue il commit dell'errore in modo che i tentativi futuri di caricare tale nome avranno esito negativo senza richiamare nuovamente il gestore.

Se il gestore genera un'eccezione, l'eccezione verrà passata all'applicazione che ha richiamato l'operazione che ha attivato l'associazione. L'oggetto MetadataLoadContext non lo intercetta e non verrà eseguito alcun binding.

Il gestore in genere non verrà chiamato più volte per lo stesso nome, a meno che due thread non eseguano la corsa per caricare lo stesso assembly. Anche in questo caso, un risultato vincerà e verrà associato atomicamente al nome.

L'oggetto MetadataLoadContext esegue intenzionalmente alcuna corrispondenza ref-def nell'assembly restituito perché ciò che costituisce una corrispondenza ref-def è un criterio. È anche il tipo di restrizione arbitraria che MetadataLoadContext cerca di evitare.

Non MetadataLoadContext è possibile utilizzare assembly da altri contesti di caricamento dei metadati o altri provider di tipi, ad esempio il sistema di reflection del runtime sottostante. Se un gestore restituisce un assembly di questo tipo, genera un'eccezione MetadataLoadContextFileLoadException.

Si applica a