Condividi tramite


Metodo IMetaDataEmit::SetClassLayout

Completa il layout di campi per una classe definita da una chiamata precedente a Metodo IMetaDataEmit::DefineTypeDef.

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 per cui definire il layout.

  • dwPackSize
    [in] Dimensione di compressione: 1, 2, 4, 8 o 16 byte. La dimensione di compressione è il numero di byte tra 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.

Note

La classe inizialmente viene definita chiamando il metodo IMetaDataEmit::DefineTypeDef e specificando uno dei tre layout disponibili per i campi della classe: automatico, sequenziale o esplicito. Normalmente è sufficiente utilizzare il layout automatico e lasciare che sia il runtime a scegliere la disposizione ottimale dei campi.

Può tuttavia capitare di dover disporre i campi secondo la disposizione utilizzata 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 la dimensione di compressione. Un campo viene allineato in base alla relativa dimensione naturale o alla dimensione di compressione, a seconda di quale di questi due valori corrisponda all'offset minore. Impostare rFieldOffsets e ulClassSize su zero.

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

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: Cor.h

Libreria: utilizzata come risorsa in MSCorEE.dll

Versioni di .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Vedere anche

Riferimenti

Interfaccia IMetaDataEmit

Interfaccia IMetaDataEmit2