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::DefineTypeDef 方法,并从三种类字段布局中指定一种:自动、顺序或显式。 通常使用自动布局,让运行时选择最佳方式来布局字段。

不过,你可能会想要根据非托管代码使用的排列方式来布局字段。 在这种情况下,请选择顺序或显式布局,并调用 SetClassLayout 来完成字段布局:

  • 顺序布局:指定封装大小。 根据自然大小或封装大小对齐字段,以字段偏移量较小者为准。 将 rFieldOffsetsulClassSize 设置为零。

  • 显式布局:指定每个字段的偏移量,或指定类大小和封装大小。

要求

平台:请参阅系统要求

标头:Cor.h

库:用作 MSCorEE.dll 中的资源

.NET Framework 版本:自 1.0 起可用

另请参阅