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] 拥有目标成员的类型或模块的相应 mdTypeRef
或 mdModuleRef
标记。
pmr
[out] 在当前范围内为成员引用定义的 mdMemberRef
标记。
注解
DefineImportMember
方法查找 mbMember
(在 pImport
指定的另一个范围中定义)指定的成员,并检索其属性。 它使用此信息在当前范围内调用 IMetaDataEmit::DefineMemberRef 方法来创建成员引用。
一般情况下,在使用 DefineImportMember
方法之前,必须在当前范围内为目标成员的父类、接口或模块创建类型引用或模块引用。 然后在 tkParent
参数中传递此引用的元数据标记。 如果编译器或链接器稍后会解析目标成员的父级,则你无需创建对该父级的引用。 总结:
如果目标成员是字段或方法,请使用 IMetaDataEmit::DefineTypeRefByName 或 IMetaDataEmit::DefineImportType 方法在当前范围内为成员的父类或父接口创建类型引用。
如果目标成员是全局变量或全局函数(即,不是类或接口的成员),请使用 IMetaDataEmit::DefineModuleRef 方法在当前范围内为成员的父模块创建模块引用。
如果编译器或链接器稍后会解析目标成员的父级,请在
tkParent
中传递mdTokenNil
。 仅当要从一个最终会链接到当前模块的 .obj 文件导入全局函数或全局变量,并且会合并元数据时,才适合执行此操作。
要求
平台:请参阅系统要求。
标头:Cor.h
库:用作 MSCorEE.dll 中的资源
.NET Framework 版本:自 1.0 起可用