Type.IsExplicitLayout Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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
.