MetadataLoadContext.CoreAssembly Eigenschaft
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.
Ruft die Assembly ab, die die Systemassembly einschließlich bekannter Typen wie Int32bezeichnet, oder legt diese fest.
public:
property System::Reflection::Assembly ^ CoreAssembly { System::Reflection::Assembly ^ get(); };
public System.Reflection.Assembly CoreAssembly { get; }
public System.Reflection.Assembly? CoreAssembly { get; }
member this.CoreAssembly : System.Reflection.Assembly
Public ReadOnly Property CoreAssembly As Assembly
Eigenschaftswert
Eine Assembly-Instanz.
Hinweise
Die Kernassembly wird anders behandelt als andere Assemblys, da Verweise auf diese bekannten Typen nicht den Assemblyverweis enthalten, im Gegensatz zu normalen Typen.
In der Regel heißt diese Assembly "mscorlib" oder "netstandard". Wenn die Kernassembly nicht gefunden werden kann, wird null
der Wert verwendet, und viele andere Spiegelungsmethoden, einschließlich derer, die Methodensignaturen analysieren, löst eine Ausnahme aus.
Dies CoreAssembly
wird bestimmt, indem der Parameter übergeben wird, der coreAssemblyName
an den MetadataAssemblyResolver Konstruktor an die MetadataAssemblyResolver.Resolve Methode übergeben wird.
Wenn im Konstruktor kein coreAssemblyName
MetadataLoadContextArgument angegeben wurde, werden Standardwerte verwendet, einschließlich "mscorlib", "System.Runtime" und "netstandard".
Die angegebene Kernassembly muss die Kerntypen nicht direkt enthalten. Sie können sie an andere Assemblys weiterleiten. Daher ist es perfekt zulässig, die Mscorlib-Fassade als die benannte Kernassembly zu verwenden.
Beachten Sie, dass System.Runtime es sich nicht um eine ideale Kernassembly handelt, da einige der interopbezogenen pseudobenutzerdefinierten Attributtypen wie DllImportAttributez. B. ausgeschlossen werden. Es kann jedoch dienen, wenn Sie kein Interesse an diesen Attributen haben. Die CustomAttributes-API überspringt diese Attribute, wenn die Kernassembly nicht die erforderlichen Typen enthält.
Die Kernassembly wird erst geladen, wenn dies erforderlich ist. Die folgenden APIs lösen die Suche nach der Kernassembly nicht aus:
- MetadataLoadContext.LoadFromStream
- MetadataLoadContext.LoadFromAssemblyPath
- MetadataLoadContext.LoadFromByteArray
- Assembly.GetName
- Assembly.FullName
- Assembly.GetReferencedAssemblies
- Assembly.GetTypes
- Assembly.DefinedTypes
- Assembly.GetExportedTypes
- Assembly.GetForwardedTypes
- Assembly.GetType(String, Boolean, Boolean)
- Type.Name
- Type.FullName
- Type.AssemblyQualifiedName
Wenn eine Kernassembly nicht gefunden werden kann oder wenn die Kernassembly fehlende Typen enthält, wirkt sich dies auf das Verhalten der MetadataLoadContext folgenden Aktionen aus:
APIs, die Signaturen oder Typenpecs analysieren und die Ergebnisse zurückgeben müssen, da Type Objekte eine Ausnahme auslösen. Beispiel:
APIs, die Typen mit bekannten Kerntypen vergleichen müssen, löst keine Ausnahme aus, und der Vergleich wird ausgewertet.
false
Wenn Sie z. B. keine Kernassembly angeben, wird für alles zurückgegebenfalse
, IsPrimitive auch typen namens Int32. Type.GetTypeCode Ebenso wird alles zurückgegebenObject.Wenn eine Metadatenentität Flags festlegt, die als pseudobenutzerdefiniertes Attribut angezeigt werden, und die Kernassembly nicht den pseudobenutzerdefinierten Attributtyp enthält, wird der MetadataLoadContext erforderliche Konstruktor oder eines der Parametertypen des Konstruktors nicht ausgelöst. Es wird das pseudobenutzerdefinierte Attribut aus der Liste der zurückgegebenen Attribute weggelassen.