IMetaDataEmit::SetClassLayout 方法
为以前通过调用 IMetaDataEmit::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::DefineTypeDef 方法并为其字段指定三种字段布局之一(自动、连续或显式)来定义的。 通常,您会使用自动布局,让运行时选择对字段进行布局的最佳方式。
但是,您可能希望字段根据非托管代码使用的排列来布局。 在这种情况下,请选择连续或显式布局,并调用 SetClassLayout 来完成字段布局:
连续布局:指定封装大小。 字段根据其自然大小或封装大小来对齐,以使字段偏移量最小的大小为准。 将 rFieldOffsets 和 ulClassSize 设置为零。
显式布局:指定每个字段的偏移量,或者指定类大小和封装大小。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**Cor.h
**库:**在 MsCorEE.dll 中用作资源
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0