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::DefineTypeRefByNameIMetaDataEmit::DefineImportType 方法,在目前範圍內為成員的父類別或父介面建立類型參考。

  • 如果目標成員是全域變數或全域函式 (也就是非類別或介面的成員),請使用 IMetaDataEmit::DefineModuleRef 方法,在目前範圍內為成員的父模組建立模組參考。

  • 如果目標成員的父系稍後會由編譯器或連結器解析,則在 tkParent 中傳入 mdTokenNil。 當全域函式或全域變數是從最終連結至目前模組和中繼資料合併的 .obj 檔案匯入時,是唯一適用的案例。

規格需求

平台:請參閱系統需求

標頭:Cor.h

程式庫:作為 MSCorEE.dll 中的資源使用

.NET Framework版本:自 1.0 起提供

另請參閱