Freigeben über


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; }
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 im Gegensatz zu normalen Typen den Assemblyverweis nicht enthalten.

In der Regel wird diese Assembly als "mscorlib" oder "netstandard" bezeichnet. Wenn die Kernassembly nicht gefunden werden kann, ist nullder Wert , und viele andere Reflexionsmethoden, einschließlich derjenigen, die Methodensignaturen analysieren, lösen eine Ausnahme aus.

Der CoreAssembly wird bestimmt, indem der an den coreAssemblyNameMetadataAssemblyResolver Konstruktor übergebene Parameter an die MetadataAssemblyResolver.Resolve -Methode übergeben wird.

Wenn im Konstruktor von MetadataLoadContextkein coreAssemblyName Argument angegeben wurde, werden Standardwerte verwendet, einschließlich "mscorlib", "System.Runtime" und "netstandard".

Die angegebene Kernassembly muss die Kerntypen nicht direkt enthalten. Er kann sie an andere Assemblys weiterleiten. Daher ist es durchaus zulässig, die mscorlib-Fassade als designierte Kernbaugruppe zu verwenden.

Beachten Sie, dass System.Runtime es sich nicht um eine ideale Kernassembly handelt, da einige der interopbezogenen pseudobenutzerdefinierten Attributtypen wie DllImportAttributeausgeschlossen 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 die Kernassembly keine Typen aufweist, wirkt sich dies wie folgt auf das Verhalten der-Assembly MetadataLoadContext aus:

  • APIs, die Signaturen oder Typespecs analysieren und die Ergebnisse als Type Objekte zurückgeben müssen, lösen eine Ausnahme aus. Beispiel:

  • APIs, die Typen mit bekannten Kerntypen vergleichen müssen, lösen keine Ausnahme aus, und der Vergleich wird mit falseausgewertet. Wenn Sie z. B. keine Kernassembly angeben, IsPrimitive wird für alles zurückgegeben false , auch für Typen mit dem Namen Int32. Type.GetTypeCode In ähnlicher Weise wird für alles zurückgegebenObject.

  • Wenn eine Metadatenentität Flags festlegt, die als pseudobenutzerdefiniertes Attribut angezeigt werden, und die Kernassembly nicht den pseudobenutzerdefinierten Attributtyp, den erforderlichen Konstruktor oder einen der Parametertypen des Konstruktors enthält, MetadataLoadContext wird nicht ausgelöst. Das pseudobenutzerdefinierte Attribut wird aus der Liste der zurückgegebenen Attribute weggelassen.

Gilt für: