Partager via


MetadataLoadContext.CoreAssembly Propriété

Définition

Obtient ou définit l’assembly qui désigne l’« assembly système » qui héberge des types connus tels que Int32.

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

Valeur de propriété

Instance de Assembly.

Remarques

L’assembly principal est traité différemment des autres assemblys, car les références à ces types bien connus n’incluent pas la référence d’assembly, contrairement aux types normaux.

En règle générale, cet assembly est nommé « mscorlib » ou « netstandard ». Si l’assembly principal est introuvable, la valeur est null, et de nombreuses autres méthodes de réflexion, y compris celles qui analysent les signatures de méthode, lèvent une exception.

le CoreAssembly est déterminé en passant le coreAssemblyName paramètre passé au MetadataAssemblyResolver constructeur à la MetadataAssemblyResolver.Resolve méthode .

Si aucun argument n’a coreAssemblyName été spécifié dans le constructeur de MetadataLoadContext, les valeurs par défaut sont utilisées, notamment « mscorlib », « System.Runtime » et « netstandard ».

L’assembly de cœurs désigné n’a pas besoin de contenir les types de cœurs directement. Il peut les transférer vers d’autres assemblys. Ainsi, il est parfaitement permis d’utiliser la façade mscorlib comme assembly principal désigné.

Notez que System.Runtime n’est pas un assembly de cœur idéal, car il exclut certains des types d’attributs pseudo-personnalisés liés à l’interopérabilité tels que DllImportAttribute. Toutefois, elle peut servir si vous n’avez aucun intérêt pour ces attributs. L’API CustomAttributes ignore ces attributs si l’assembly principal n’inclut pas les types nécessaires.

L’assembly de cœur n’est pas chargé tant que cela n’est pas nécessaire. Les API suivantes ne déclenchent pas la recherche de l’assembly principal :

Si un assembly de cœur est introuvable ou si l’assembly principal est des types manquants, cela affecte le comportement du MetadataLoadContext comme suit :

  • Les API qui doivent analyser des signatures ou des typespecs et retourner les résultats, car Type les objets lèvent une exception. Exemple :

  • Les API qui doivent comparer des types à des types principaux bien connus ne lèvent pas d’exception, et la comparaison prend la valeur false. Par exemple, si vous ne spécifiez pas d’assembly de cœur, IsPrimitive retourne false pour tout, même les types nommés Int32. De même, Type.GetTypeCode retournera Object pour tout.

  • Si une entité de métadonnées définit des indicateurs qui apparaissent sous la forme d’un attribut pseudo-personnalisé et que l’assembly principal ne contient pas le type d’attribut pseudo-personnalisé, le constructeur nécessaire ou l’un des types de paramètres du constructeur, le MetadataLoadContext ne sera pas levée. Il omet l’attribut pseudo-personnalisé de la liste des attributs retournés.

S’applique à