Type.IsExplicitLayout Propiedad

Definición

Obtiene un valor que indica si los campos del tipo actual se disponen en los desplazamientos especificados explícitamente.

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

Valor de propiedad

Boolean

true si la propiedad Attributes del tipo actual incluye ExplicitLayout; en caso contrario, es false.

Implementaciones

Ejemplos

En el ejemplo siguiente se crea una instancia de un tipo y se muestra el valor de su IsExplicitLayout propiedad . Usa la MySystemTime clase , que también está en el ejemplo de código para 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

Comentarios

Esta propiedad se proporciona por comodidad. Como alternativa, puede usar el valor de enumeración para seleccionar los atributos de diseño de tipo y, a TypeAttributes.LayoutMask continuación, probar si está TypeAttributes.ExplicitLayout establecido. Los valores de enumeración , y indican la forma en que los campos TypeAttributes.AutoLayout TypeAttributes.ExplicitLayout del tipo se TypeAttributes.SequentialLayout menten en memoria.

Para los tipos dinámicos, puede TypeAttributes.ExplicitLayout especificar al crear el tipo. En el código, aplique el atributo con el valor de enumeración al tipo para especificar que los desplazamientos en los que se inician los campos StructLayoutAttribute LayoutKind.Explicit se especifican explícitamente.

Nota

No se puede usar GetCustomAttributes el método para determinar si se ha aplicado a un StructLayoutAttribute tipo.

Si el objeto actual representa un tipo genérico construido, esta propiedad se aplica a la definición de tipo genérico a partir de la cual Type se construyó el tipo. Por ejemplo, si el objeto actual representa ( en Visual Basic), el Type valor de esta propiedad viene determinado por MyGenericType<int> MyGenericType(Of Integer) MyGenericType<T> .

Si el objeto actual representa un parámetro de tipo en la definición de un tipo genérico o un método Type genérico, esta propiedad siempre devuelve false .

Se aplica a

Consulte también