Freigeben über


IMetaDataEmit::SetClassLayout Method

Schließt das Layout von Feldern für eine Klasse ab, die durch einen vorherigen Aufruf der DefineTypeDef-Methode definiert wurde.

Syntax

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

Parameters

td [in] Ein mdTypeDef Token, das die zu erstellende Klasse angibt.

dwPackSize [in] Die Verpackungsgröße: 1, 2, 4, 8 oder 16 Byte. Die Verpackungsgröße ist die Anzahl der Bytes zwischen angrenzenden Feldern.

rFieldOffsets [in] Ein Array von COR_FIELD_OFFSET Strukturen, von denen jedes ein Feld der Klasse und den Offset des Felds innerhalb der Klasse angibt. Beenden Sie das Array mit mdTokenNil.

ulClassSize [in] Die Größe der Klasse in Bytes.

Remarks

Die Klasse wird zunächst durch Aufrufen der IMetaDataEmit::D efineTypeDef-Methode definiert und ein von drei Layouts für die Felder der Klasse angegeben: automatisch, sequenziell oder explizit. Normalerweise würden Sie das automatische Layout verwenden und die Laufzeit die beste Möglichkeit zum Layout der Felder auswählen lassen.

Möglicherweise möchten Sie jedoch, dass die Felder gemäß der Anordnung angeordnet sind, die nicht verwalteten Code verwendet. Wählen Sie in diesem Fall entweder sequenzielles oder explizites Layout aus, und rufen Sie SetClassLayout auf, um das Layout der Felder abzuschließen:

  • Sequenzielles Layout: Geben Sie die Verpackungsgröße an. Ein Feld wird entweder entsprechend seiner natürlichen Größe oder der Verpackungsgröße ausgerichtet, je nachdem, was zum kleineren Offset des Felds führt. Festlegen rFieldOffsets und ulClassSize auf Null.

  • Explizites Layout: Geben Sie entweder den Offset jedes Felds an, oder geben Sie die Klassengröße und die Verpackungsgröße an.

Requirements

Plattformen: Siehe .NET unterstützte Betriebssysteme.

Header: Cor.h

Library: CorGuids.lib

See also