Freigeben über


MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) Methode

Definition

Gibt eine Assembly aus einem angegebenen Assemblynamen zurück.

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

Parameter

context
MetadataLoadContext

Das Kontextobjekt zum Laden von Metadaten, das die isolierte Umgebung mit Type-Objekten darstellt, die nur zu Untersuchungszwecken geladen werden

assemblyName
AssemblyName

Der Name der Assembly.

Gibt zurück

Die Assembly für den angegebenen assemblyName

Hinweise

Das Binden eines Assemblynamens an eine Assembly erfolgt, wenn LoadFromAssemblyName aufgerufen wird oder wenn ein Typ aus einer Assembly eine Abhängigkeit von einer anderen Assembly aufweist. Der Handler, der überschreibtResolve, sollte oder verwendenMetadataLoadContext.LoadFromStream, MetadataLoadContext.LoadFromByteArrayMetadataLoadContext.LoadFromAssemblyPath um die angeforderte Assembly zu laden und zurückzugeben.

Um anzugeben, dass eine Assembly nicht gefunden werden kann, sollte der Handler zurückgeben null , anstatt eine Ausnahme auszulösen. Die Rückgabe null führt einen Commit für den Fehler aus, sodass zukünftige Versuche, diesen Namen zu laden, fehlschlagen, ohne dass der Handler erneut aufgerufen wird.

Wenn der Handler eine Ausnahme auslöst, wird die Ausnahme an die Anwendung übergeben, die den Vorgang aufgerufen hat, der die Bindung ausgelöst hat. Der MetadataLoadContext fängt es nicht ab, und es wird keine Bindung durchgeführt.

Der Handler wird in der Regel nicht mehr als einmal für denselben Namen aufgerufen, es sei denn, zwei Threads führen ein Rennen durch, um dieselbe Assembly zu laden. Selbst in diesem Fall gewinnt ein Ergebnis und wird atomar an den Namen gebunden.

Führt MetadataLoadContext absichtlich keinen Ref-Def-Abgleich für die zurückgegebene Assembly aus, da eine ref-def-Übereinstimmung eine Richtlinie ist. Es ist auch die Art von willkürlicher Einschränkung, die MetadataLoadContext vermieden werden soll.

Der MetadataLoadContext kann keine Assemblys aus anderen Metadatenladekontexten oder anderen Typanbietern (z. B. dem eigenen Reflektionssystem der zugrunde liegenden Laufzeit) nutzen. Wenn ein Handler eine solche Assembly zurückgibt, löst eine MetadataLoadContext aus FileLoadException.

Gilt für: