Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
Type.IsExplicitLayout, propriété
Obtient une valeur indiquant si l'attribut de présentation de classe ExplicitLayout est sélectionné pour le Type.
Assembly : mscorlib (dans mscorlib.dll)
Valeur de propriété
Type : System.Booleantrue si l'attribut de présentation de classe ExplicitLayout est sélectionné pour Type ; sinon, false.
Implémentations
_Type.IsExplicitLayoutLayoutMask est utilisé pour sélectionner les attributs de présentation de classe. Les attributs de présentation de classe (AutoLayout, SequentialLayout et ExplicitLayout) définissent le mode de disposition des champs de l'instance de classe dans la mémoire.
Les classes marquées avec l'attribut ExplicitLayout incitent le chargeur à ignorer la séquence de champ et à utiliser les règles de présentation explicites fournies, sous forme d'offsets de champ, de taille de classe globale et d'alignement ou les trois.
Utilisez l'attribut ExplicitLayout pour spécifier les offsets d'où chaque champ démarre ou spécifier la taille globale et, éventuellement, la taille de compactage des objets de la classe. La taille de compactage représente l'espace mémoire vide entre les champs et doit être égale à 1, 2, 4, 8 ou 16 octets.
Si le Type actuel représente un type générique construit, cette propriété s'applique à la définition de type générique à partir de laquelle le type a été construit. Par exemple, si le Type actuel représente MyGenericType<int> (MyGenericType(Of Integer) en Visual Basic), la valeur de cette propriété est déterminée par MyGenericType<T>.
Si le Type actuel représente un paramètre de type dans la définition d'un type ou d'une méthode générique, cette propriété retourne toujours la valeur false.
L'exemple suivant crée une instance d'un type et affiche la valeur de sa propriété IsExplicitLayout. Il utilise la classe MySystemTime qui se trouve également dans l'exemple de code relatif à StructLayoutAttribute.
using System; using System.Reflection; using System.ComponentModel; using System.Runtime.InteropServices; // Class to test for the ExplicitLayout property. [StructLayout(LayoutKind.Explicit, Size=16, CharSet=CharSet.Ansi)] public class MySystemTime { [FieldOffset(0)]public ushort wYear; [FieldOffset(2)]public ushort wMonth; [FieldOffset(4)]public ushort wDayOfWeek; [FieldOffset(6)]public ushort wDay; [FieldOffset(8)]public ushort wHour; [FieldOffset(10)]public ushort wMinute; [FieldOffset(12)]public ushort wSecond; [FieldOffset(14)]public ushort wMilliseconds; } public class Program { public static void Main(string[] args) { // Create an instance of the type using the GetType method. Type t = typeof(MySystemTime); // Get and display the IsExplicitLayout property. Console.WriteLine("\nIsExplicitLayout for MySystemTime is {0}.", t.IsExplicitLayout); } }
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.