IMetaDataEmit::SetClassLayout-Methode
Schließt das Layout der Felder 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
);
Parameter
td
[in] Ein mdTypeDef
-Token, das die Klasse angibt, für die das Layout festgelegt werden soll.
dwPackSize
[in] Die Paketgröße: 1, 2, 4, 8 oder 16 Bytes. Die Paketgröße ist die Anzahl von Bytes zwischen angrenzenden Feldern.
rFieldOffsets
[in] Ein Array von COR_FIELD_OFFSET-Strukturen, die jeweils ein Feld der Klasse und den Offset des Felds innerhalb der Klasse angeben. Beenden Sie das Array mit mdTokenNil
.
ulClassSize
[in] Die Größe der Klasse in Bytes.
Bemerkungen
Die Klasse wird zunächst durch Aufrufen der IMetaDataEmit::DefineTypeDef-Methode definiert. Hierbei wird eines von drei Layouts für die Felder der Klasse angegeben: automatisch, sequenziell oder explizit. Normalerweise verwenden Sie das automatische Layout und überlassen der Runtime die Wahl der besten Layoutmethode für die Felder.
Möglicherweise möchten Sie jedoch, dass die Felder die gleiche Anordnung verwenden wie der nicht verwaltete Code. Wählen Sie in diesem Fall entweder sequenzielles oder explizites Layout aus, und rufen Sie SetClassLayout
auf, um das Layout der Felder zu abzuschließen:
Sequenzielles Layout: Geben Sie die Paketgröße an. Ein Feld wird entweder nach seiner natürlichen Größe oder nach der Paketgröße ausgerichtet – je nachdem, welche Variante zu einem geringeren Offset des Felds führt. Legen Sie
rFieldOffsets
undulClassSize
auf „0“ fest.Explizites Layout: Geben Sie entweder den Offset jedes Felds oder die Klassengröße und die Paketgröße an.
Anforderungen
Plattformen: Informationen finden Sie unter Systemanforderungen.
Header: Cor.h
Bibliothek: Als Ressource in „MSCorEE.dll“ verwendet
.NET Framework-Versionen: Seit Version 1.0 verfügbar