IMetaDataEmit::DefineImportMember Method

创建对当前范围外部定义的类型或模块的指定成员的引用,并为该引用定义令牌。

Syntax

HRESULT DefineImportMember (
    [in]  IMetaDataAssemblyImport  *pAssemImport,
    [in]  const void               *pbHashValue,
    [in]  ULONG                    cbHashValue,
    [in]  IMetaDataImport          *pImport,
    [in]  mdToken                  mbMember,
    [in]  IMetaDataAssemblyEmit    *pAssemEmit,
    [in]  mdToken                  tkParent,
    [out] mdMemberRef              *pmr
);

Parameters

pAssemImport [in] 一个 IMetaDataAssemblyImport 接口,表示从中导入目标成员的程序集。

pbHashValue [in]一个数组,其中包含由 pAssemImport. 指定的程序集的哈希。

cbHashValue [in]数组中的 pbHashValue 字节数。

pImport [in]一个 IMetaDataImport 接口,表示从中导入目标成员的元数据范围。

mbMember [in]指定目标成员的元数据令牌。 令牌可以是 mdMethodDef (对于成员方法)、 mdProperty (对于成员属性)或 mdFieldDef (对于成员字段)标记。

pAssemEmit [in] 一个 IMetaDataAssemblyEmit 接口,该接口表示将目标成员导入到其中的程序集。

tkParent [in]类型 mdTypeRef 或模块的或 mdModuleRef 令牌分别拥有目标成员。

pmr [out]在 mdMemberRef 成员引用的当前作用域中定义的令牌。

Remarks

该方法DefineImportMember查找在另一个作用域(由mbMemberpImport其指定)中定义的成员并检索其属性。 它使用此信息调用当前作用域中的 IMetaDataEmit::D efineMemberRef 方法来创建成员引用。

通常,在使用 DefineImportMember 该方法之前,必须在当前作用域中创建目标成员的父类、接口或模块的类型引用或模块引用。 然后,此引用的 tkParent 元数据令牌将传入自变量中。 如果稍后将由编译器或链接器解析,则无需创建对目标成员父成员的引用。 To summarize:

  • 如果目标成员是字段或方法,请使用 IMetaDataEmit::D efineTypeRefByNameIMetaDataEmit::D efineImportType 方法在当前范围内为成员的父类或父接口创建类型引用。

  • 如果目标成员是全局变量或全局函数(即不是类或接口的成员),请使用 IMetaDataEmit::D efineModuleRef 方法为成员的父模块创建模块引用。

  • 如果目标成员的父级稍后将由编译器或链接器解析,则传入 mdTokenNiltkParent。 唯一适用的情况是,全局函数或全局变量是从最终链接到当前模块和元数据合并的.obj文件中导入的。

Requirements

平台: 请参阅 .NET 支持的作系统

Header: Cor.h

Library: CorGuids.lib

See also