IMetaDataEmit::DefineImportMember 方法

创建对超出当前范围定义的类型或模块的指定成员的引用,并为该引用定义一个标记。

语法

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
);  

参数

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

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

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

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

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

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

tkParent
[in] 拥有目标成员的类型或模块的相应 mdTypeRefmdModuleRef 标记。

pmr
[out] 在当前范围内为成员引用定义的 mdMemberRef 标记。

注解

DefineImportMember 方法查找 mbMember(在 pImport 指定的另一个范围中定义)指定的成员,并检索其属性。 它使用此信息在当前范围内调用 IMetaDataEmit::DefineMemberRef 方法来创建成员引用。

一般情况下,在使用 DefineImportMember 方法之前,必须在当前范围内为目标成员的父类、接口或模块创建类型引用或模块引用。 然后在 tkParent 参数中传递此引用的元数据标记。 如果编译器或链接器稍后会解析目标成员的父级,则你无需创建对该父级的引用。 总结:

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

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

  • 如果编译器或链接器稍后会解析目标成员的父级,请在 tkParent 中传递 mdTokenNil。 仅当要从一个最终会链接到当前模块的 .obj 文件导入全局函数或全局变量,并且会合并元数据时,才适合执行此操作。

要求

平台:请参阅系统要求

标头:Cor.h

库:用作 MSCorEE.dll 中的资源

.NET Framework 版本:自 1.0 起可用

另请参阅