Condividi tramite


Metodo IMetaDataEmit::SetClassLayout

Completa il layout dei campi per una classe definita da una chiamata precedente al metodo DefineTypeDef.

Sintassi

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

Parametri

td
[in] Token mdTypeDef che specifica la classe da disporre.

dwPackSize
[in] Dimensioni di compressione: 1, 2, 4, 8 o 16 byte. La dimensione di compressione è il numero di byte tra i campi adiacenti.

rFieldOffsets
[in] Matrice di strutture COR_FIELD_OFFSET , ognuna delle quali specifica un campo della classe e l'offset del campo all'interno della classe . Terminare la matrice con mdTokenNil.

ulClassSize
[in] Dimensione, in byte, della classe .

Commenti

La classe viene inizialmente definita chiamando il metodo IMetaDataEmit::D efineTypeDef e specificando uno dei tre layout per i campi della classe: automatico, sequenziale o esplicito. In genere, si usa il layout automatico e si consente al runtime di scegliere il modo migliore per disporre i campi.

Tuttavia, è possibile che i campi siano disposti in base alla disposizione usata dal codice non gestito. In questo caso, scegliere il layout sequenziale o esplicito e chiamare SetClassLayout per completare il layout dei campi:

  • Layout sequenziale: specificare le dimensioni di compressione. Un campo viene allineato in base alla dimensione naturale o alla dimensione di compressione, a seconda del risultato dell'offset più piccolo del campo. Impostare rFieldOffsets e ulClassSize su zero.

  • Layout esplicito: specificare l'offset di ogni campo o specificare le dimensioni della classe e la dimensione di compressione.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: Cor.h

Libreria: Usato come risorsa in MSCorEE.dll

Versioni di .NET Framework: Disponibile dalla versione 1.0

Vedi anche