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 方法查找在 pImport 指定的另一范围中定义的 mbMember 所指定的成员并检索其属性。 它使用此信息在当前范围内调用 IMetaDataEmit::DefineMemberRef 方法,以创建成员引用。

使用 DefineImportMember 方法之前,通常必须在当前范围中为目标成员的父类、父接口或父模块创建类型引用或模块引用。 然后,此引用的元数据标记将传入 tkParent 参数。 如果编译器或链接器以后会解析目标成员的父级,则不必创建对该父级的引用。 总结如下:

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

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

  • 如果编译器或链接器以后会解析目标成员的父级,则将 mdTokenNil 传入 tkParent。 此操作仅适用于以下情况:从一个 .obj 文件导入全局函数或全局变量,该文件最终会链接到当前模块以及合并的元数据。

要求

**平台:**请参见 .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

请参见

参考

IMetaDataEmit 接口

IMetaDataEmit2 接口