Partager via


Type.IsExplicitLayout Propriété

Définition

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

public:
 property bool IsExplicitLayout { bool get(); };
public bool IsExplicitLayout { get; }
member this.IsExplicitLayout : bool
Public ReadOnly Property IsExplicitLayout As Boolean

Valeur de propriété

Boolean

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

Implémente

Exemples

L’exemple suivant crée une instance d’un type et affiche la valeur de sa IsExplicitLayout propriété. Elle utilise la MySystemTime classe, qui est également dans l’exemple de code pour 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);
    }
}
Imports System.Reflection
Imports System.ComponentModel
Imports System.Runtime.InteropServices

'Class to test for the ExplicitLayout property.
   <StructLayout(LayoutKind.Explicit, Size := 16, CharSet := CharSet.Ansi)>  _
   Public Class MySystemTime
      <FieldOffset(0)> Public wYear As Short
      <FieldOffset(2)> Public wMonth As Short
      <FieldOffset(4)> Public wDayOfWeek As Short
      <FieldOffset(6)> Public wDay As Short
      <FieldOffset(8)> Public wHour As Short
      <FieldOffset(10)> Public wMinute As Short
      <FieldOffset(12)> Public wSecond As Short
      <FieldOffset(14)> Public wMilliseconds As Short
   End Class 

Public Class Program
    Public Shared Sub Main()
        'Create an instance of type using the GetType method.
        Dim t As Type = GetType(MySystemTime)
        ' Get and display the IsExplicitLayout property.
        Console.WriteLine(vbCrLf & "IsExplicitLayout for MySystemTime is {0}.", _
            t.IsExplicitLayout)
    End Sub
End Class

Remarques

Cette propriété est fournie à titre de commodité. Vous pouvez également utiliser la TypeAttributes.LayoutMask valeur d’énumération pour sélectionner les attributs de disposition de type, puis tester si TypeAttributes.ExplicitLayout est défini. Les TypeAttributes.AutoLayout TypeAttributes.ExplicitLayout TypeAttributes.SequentialLayout valeurs d’énumération, et indiquent la façon dont les champs du type sont disposés en mémoire.

Pour les types dynamiques, vous pouvez spécifier TypeAttributes.ExplicitLayout quand vous créez le type. Dans le code, appliquez l' StructLayoutAttribute attribut avec la LayoutKind.Explicit valeur d’énumération au type, pour spécifier que les décalages auxquels les champs commencent sont spécifiés explicitement.

Notes

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

Si le actuel 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 le actuel Type représente MyGenericType<int> ( MyGenericType(Of Integer) dans Visual Basic), la valeur de cette propriété est déterminée par MyGenericType<T> .

Si le actuel Type représente un paramètre de type dans la définition d’un type générique ou d’une méthode générique, cette propriété retourne toujours false .

S’applique à

Voir aussi