MetadataLoadContext.CoreAssembly Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 :
- 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
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 retournefalse
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.