Sdílet prostřednictvím


IMetaDataEmit::SetClassLayout Method

Dokončí rozložení polí pro třídu, která byla definována předchozím voláním DefineTypeDef – metoda.

Syntax

HRESULT SetClassLayout (
    [in]  mdTypeDef           td,
    [in]  DWORD               dwPackSize,
    [in]  COR_FIELD_OFFSET    rFieldOffsets[],
    [in]  ULONG               ulClassSize
);

Parameters

td [v] Token mdTypeDef , který určuje třídu, která má být rozložena.

dwPackSize [v] Velikost balení: 1, 2, 4, 8 nebo 16 bajtů. Velikost balení je počet bajtů mezi sousedními poli.

rFieldOffsets [v] Pole COR_FIELD_OFFSET struktur, z nichž každý určuje pole třídy a posun pole v rámci třídy. Ukončete pole pomocí mdTokenNilfunkce .

ulClassSize [v] Velikost třídy v bajtech.

Remarks

Třída je původně definována voláním IMetaDataEmit::D efineTypeDef metoda a určením jednoho ze tří rozložení pro pole třídy: automatické, sekvenční nebo explicitní. Za normálních okolností byste použili automatické rozložení a nechat modul runtime zvolit nejlepší způsob rozložení polí.

Můžete ale chtít pole rozložená podle uspořádání, které nespravovaný kód používá. V tomto případě zvolte sekvenční nebo explicitní rozložení a volání SetClassLayout pro dokončení rozložení polí:

  • Sekvenční rozložení: Zadejte velikost balení. Pole je zarovnané podle jeho přirozené velikosti nebo velikosti balení, podle toho, co má za následek menší posun pole. Nastavte rFieldOffsets a ulClassSize na nulu.

  • Explicitní rozložení: Zadejte posun každého pole nebo zadejte velikost třídy a velikost balení.

Requirements

Platformy: Viz podporované operační systémy .NET.

Header: Cor.h

Library: CorGuids.lib

See also