Type.IsExplicitLayout Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá hodnotu určující, zda jsou pole aktuálního typu rozložena s explicitně zadanými posuny.
public:
property bool IsExplicitLayout { bool get(); };
public bool IsExplicitLayout { get; }
member this.IsExplicitLayout : bool
Public ReadOnly Property IsExplicitLayout As Boolean
Hodnota vlastnosti
true
pokud Attributes vlastnost aktuálního typu zahrnuje ExplicitLayout ; jinak false
.
Implementuje
Příklady
Následující příklad vytvoří instanci typu a zobrazí hodnotu jeho IsExplicitLayout vlastnosti. Používá třídu MySystemTime
, která je také v příkladu kódu pro 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
Poznámky
Tato vlastnost je k dispozici jako pohodlí. Případně můžete použít hodnotu výčtu k výběru atributů rozložení typu a pak TypeAttributes.LayoutMask otestovat, zda TypeAttributes.ExplicitLayout je nastavena. Hodnoty výčtu , a označují způsob, jakým jsou pole typu TypeAttributes.AutoLayout TypeAttributes.ExplicitLayout TypeAttributes.SequentialLayout rozložena do paměti.
Pro dynamické typy můžete určit TypeAttributes.ExplicitLayout při vytváření typu. V kódu použijte atribut s hodnotou výčtu na typ a určete, že posuny, ve kterých pole začínají, jsou StructLayoutAttribute LayoutKind.Explicit zadány explicitně.
Poznámka
Metodu nelze GetCustomAttributes použít k určení, zda byl použit na StructLayoutAttribute typ.
Pokud aktuální představuje vytvořený obecný typ, tato vlastnost se vztahuje na definici obecného typu, ze Type kterého byl typ vytvořen. Pokud například aktuální představuje ( v Visual Basic), je hodnota této vlastnosti Type určena MyGenericType<int>
MyGenericType(Of Integer)
MyGenericType<T>
hodnotou .
Pokud aktuální představuje parametr typu v definici obecného typu nebo Type obecné metody, vrátí tato vlastnost vždy hodnotu false
.