Bagikan melalui


IMetaDataEmit::SetClassLayout Method

Menyelesaikan tata letak bidang untuk kelas yang telah ditentukan oleh panggilan sebelumnya ke Metode DefineTypeDef.

Syntax

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

Parameters

td [di] Token mdTypeDef yang menentukan kelas yang akan ditata.

dwPackSize [di] Ukuran pengemasan: 1, 2, 4, 8 atau 16 byte. Ukuran pengemasan adalah jumlah byte antara bidang yang berdekatan.

rFieldOffsets [di] Array struktur COR_FIELD_OFFSET , yang masing-masing menentukan bidang kelas dan offset bidang dalam kelas . Hentikan array dengan mdTokenNil.

ulClassSize [di] Ukuran, dalam byte, dari kelas .

Remarks

Kelas awalnya didefinisikan dengan memanggil metode IMetaDataEmit::D efineTypeDef , dan menentukan salah satu dari tiga tata letak untuk bidang kelas: otomatis, berurutan, atau eksplisit. Biasanya, Anda akan menggunakan tata letak otomatis dan membiarkan runtime memilih cara terbaik untuk meletakkan bidang.

Namun, Anda mungkin ingin bidang ditata sesuai dengan pengaturan yang digunakan kode yang tidak dikelola. Dalam hal ini, pilih tata letak berurutan atau eksplisit dan panggil SetClassLayout untuk menyelesaikan tata letak bidang:

  • Tata letak berurutan: Tentukan ukuran pengemasan. Bidang diselaraskan sesuai dengan ukuran alaminya atau ukuran pengemasannya, mana pun yang menghasilkan offset bidang yang lebih kecil. Atur rFieldOffsets dan ulClassSize ke nol.

  • Tata letak eksplisit: Tentukan offset setiap bidang atau tentukan ukuran kelas dan ukuran pengemasan.

Requirements

Platform: Lihat Sistem operasi yang didukung .NET.

Header: Cor.h

Library: CorGuids.lib

See also