Share via


MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) Méthode

Définition

Retourne un assembly à partir d’un nom d’assembly donné.

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

Paramètres

context
MetadataLoadContext

Objet de contexte de charge de métadonnées qui représente l’univers fermé d’objets Type chargés à des fins d’inspection uniquement.

assemblyName
AssemblyName

Nom de l'assembly.

Retours

Assembly du assemblyName fourni.

Remarques

La liaison d’un nom d’assembly à un assembly se produit quand LoadFromAssemblyName est appelé ou lorsqu’un type d’un assembly a une dépendance sur un autre assembly. Le gestionnaire qui remplace Resolve doit utiliser MetadataLoadContext.LoadFromStreamou MetadataLoadContext.LoadFromAssemblyPathMetadataLoadContext.LoadFromByteArray pour charger l’assembly demandé et le retourner.

Pour indiquer l’échec de la recherche d’un assembly, le gestionnaire doit retourner null au lieu de lever une exception. Le retour null valide l’échec de sorte que les prochaines tentatives de chargement de ce nom échouent sans appeler à nouveau le gestionnaire.

Si le gestionnaire lève une exception, l’exception est transmise à l’application qui a appelé l’opération qui a déclenché la liaison. Le MetadataLoadContext ne l’interceptera pas et aucune liaison ne se produira.

Le gestionnaire n’est généralement pas appelé plusieurs fois pour le même nom, sauf si deux threads sont en concurrence pour charger le même assembly. Même dans ce cas, un résultat gagnera et sera lié atomiquement au nom.

Le MetadataLoadContext n’effectue intentionnellement aucune correspondance ref-def sur l’assembly retourné, car ce qui constitue une correspondance ref-def est une stratégie. C’est aussi le genre de restriction arbitraire que MetadataLoadContext s’efforce d’éviter.

Impossible de MetadataLoadContext consommer des assemblys à partir d’autres contextes de chargement de métadonnées ou d’autres fournisseurs de types (tels que le propre système de réflexion du runtime sous-jacent). Si un gestionnaire retourne un tel assembly, le MetadataLoadContext lève un FileLoadException.

S’applique à