Dela via


IMetaDataEmit::SetClassLayout, metod

Slutför layouten för fält för en klass som har definierats av ett tidigare anrop till DefineTypeDef-metoden.

Syntax

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

Parametrar

td
[in] En mdTypeDef token som anger vilken klass som ska anges.

dwPackSize
[in] Förpackningsstorlek: 1, 2, 4, 8 eller 16 byte. Förpackningsstorleken är antalet byte mellan angränsande fält.

rFieldOffsets
[in] En matris med COR_FIELD_OFFSET strukturer, som var och en anger ett fält i klassen och fältets förskjutning i klassen. Avsluta matrisen med mdTokenNil.

ulClassSize
[in] Storleken i byte för klassen.

Kommentarer

Klassen definieras först genom att anropa metoden IMetaDataEmit::D efineTypeDef och ange en av tre layouter för fälten i klassen: automatisk, sekventiell eller explicit. Normalt använder du automatisk layout och låter körningen välja det bästa sättet att utforma fälten.

Men du kanske vill att fälten ska anges enligt den ordning som ohanterad kod använder. I det här fallet väljer du antingen sekventiell eller explicit layout och anropar SetClassLayout för att slutföra layouten för fälten:

  • Sekventiell layout: Ange förpackningsstorlek. Ett fält justeras efter antingen dess naturliga storlek eller förpackningsstorlek, beroende på vilket som resulterar i fältets mindre förskjutning. Ange rFieldOffsets och ulClassSize till noll.

  • Explicit layout: Ange antingen förskjutningen för varje fält eller ange klassstorleken och förpackningsstorleken.

Krav

Plattformar: Se Systemkrav.

Huvudet: Cor.h

Bibliotek: Används som en resurs i MSCorEE.dll

.NET Framework versioner: Tillgänglig sedan 1.0

Se även