MetadataLoadContext.CoreAssembly Eigenschaft

Definition

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

Assembly

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 nullder 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:

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.

Gilt für