MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.