Метод IMetaDataEmit::SetClassLayout
Завершает макет полей для класса, определенного предыдущим вызовом метода DefineTypeDef.
Синтаксис
HRESULT SetClassLayout (
[in] mdTypeDef td,
[in] DWORD dwPackSize,
[in] COR_FIELD_OFFSET rFieldOffsets[],
[in] ULONG ulClassSize
);
Параметры
td
[in] Токен mdTypeDef
, указывающий класс, который необходимо выложить.
dwPackSize
[in] Размер упаковки: 1, 2, 4, 8 или 16 байт. Размер упаковки — это количество байтов между смежными полями.
rFieldOffsets
[in] Массив COR_FIELD_OFFSET структур, каждая из которых задает поле класса и смещение поля внутри класса. Завершите массив с помощью mdTokenNil
.
ulClassSize
[in] Размер класса в байтах.
Комментарии
Изначально класс определяется путем вызова метода IMetaDataEmit::D efineTypeDef и указания одного из трех макетов для полей класса: автоматический, последовательный или явный. Как правило, вы используете автоматический макет и позволяете среде выполнения выбрать оптимальный способ размещения полей.
Однако может потребоваться, чтобы поля были размещены в соответствии с расположением, которое использует неуправляемый код. В этом случае выберите последовательный или явный макет и вызовите SetClassLayout
для завершения макета полей:
Последовательный макет. Укажите размер упаковки. Поле выравнивается в соответствии с его естественным размером или размером упаковки, в зависимости от того, что приводит к меньшему смещению поля. Присвойте
rFieldOffsets
иulClassSize
значение нулю.Явный макет. Укажите смещение каждого поля или укажите размер класса и размер упаковки.
Требования
Платформы: см. раздел Требования к системе.
Заголовка: Cor.h
Библиотека: Используется в качестве ресурса в MSCorEE.dll
версии платформа .NET Framework: доступно с версии 1.0.