创建对当前范围外部定义的类型或模块的指定成员的引用,并为该引用定义令牌。
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 efineTypeRefByName 或 IMetaDataEmit::D efineImportType 方法在当前范围内为成员的父类或父接口创建类型引用。
如果目标成员是全局变量或全局函数(即不是类或接口的成员),请使用 IMetaDataEmit::D efineModuleRef 方法为成员的父模块创建模块引用。
如果目标成员的父级稍后将由编译器或链接器解析,则传入
mdTokenNiltkParent。 唯一适用的情况是,全局函数或全局变量是从最终链接到当前模块和元数据合并的.obj文件中导入的。
Requirements
平台: 请参阅 .NET 支持的作系统。
Header: Cor.h
Library: CorGuids.lib