Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Type.IsExplicitLayout propriété

 

Date de publication : novembre 2016

Obtient une valeur qui indique si les champs du type actuel sont placés aux offsets explicitement spécifiés.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

public bool IsExplicitLayout { get; }

Valeur de propriété

Type: System.Boolean

true si la propriété Attributes du type actuel comprend TypeAttributes.ExplicitLayout ; sinon, false.

Cette propriété est fournie pour des raisons pratiques. Vous pouvez également utiliser le TypeAttributes.LayoutMaskvaleur d’énumération pour sélectionner les attributs de mise en page de type et puis testez si TypeAttributes.ExplicitLayout est défini. Le TypeAttributes.AutoLayout, TypeAttributes.ExplicitLayout, et TypeAttributes.SequentialLayout valeurs d’énumération indiquent la façon des champs du type sont disposés en mémoire.

Pour les types dynamiques, vous pouvez spécifier TypeAttributes.ExplicitLayout lorsque vous créez le type. Dans le code, vous devez appliquer le StructLayoutAttribute d’attribut avec le LayoutKind.Explicit valeur d’énumération du type, pour spécifier que les offsets de début en les champs sont spécifiés explicitement.

System_CAPS_noteRemarque

Vous ne pouvez pas utiliser le GetCustomAttributes méthode pour déterminer si le StructLayoutAttribute a été appliqué à un type.

Si le courant Type 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 l’actuel Type 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 courant Type représente un paramètre de type dans la définition d’un type générique ou une méthode générique, cette propriété retourne toujours false.

L’exemple suivant crée une instance d’un type et affiche la valeur de son IsExplicitLayout propriété. Il utilise le MySystemTime (classe), qui est également dans l’exemple de code 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);
    }
}

.NET Framework
Disponible depuis 1.1
Silverlight pour Windows Phone
Disponible depuis 8.0
Retour au début
Afficher: