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
[入力] 対象のメンバーのインポート元となるアセンブリを表す IMetaDataAssemblyImport インターフェイス。pbHashValue
[入力] pAssemImport で指定したアセンブリのハッシュが含まれた配列。cbHashValue
[入力] pbHashValue 配列のバイト数。pImport
[入力] 対象のメンバーのインポート元となるメタデータ スコープを表す IMetaDataImport インターフェイス。mbMember
[入力] 対象メンバーを指定するメタデータ トークン。 指定できるトークンは、mdMethodDef (メンバー メソッドの場合)、mdProperty (メンバー プロパティの場合)、mdFieldDef (メンバー フィールドの場合) のいずれかです。pAssemEmit
[入力] 対象のメンバーのインポート先となるアセンブリを表す IMetaDataAssemblyEmit インターフェイス。tkParent
[入力] 対象メンバーを所有する、型に対応する mdTypeRef トークンまたはモジュールに対応する mdModuleRef トークン。pmr
[出力] メンバー参照の現在のスコープに定義されている mdMemberRef トークン。
解説
DefineImportMember メソッドは、pImport で指定された別のスコープに定義されている、mbMember で指定されたメンバーを検索し、そのプロパティを取得します。 この情報を使用して現在のスコープの IMetaDataEmit::DefineMemberRef メソッドを呼び出し、メンバー参照を作成します。
通常、DefineImportMember メソッドを使用するには、対象メンバーの親クラス、インターフェイス、またはモジュール用の型参照またはモジュール参照を、現在のスコープ内に作成する必要があります。 次に、この参照のメタデータ トークンを tkParent 引数に渡します。 コンパイラまたはリンカーを使用して後で解決する場合は、対象メンバーへの参照を作成する必要はありません。 まとめると、次のようになります。
対象メンバーがフィールドまたはメソッドの場合、IMetaDataEmit::DefineTypeRefByName メソッドまたは IMetaDataEmit::DefineImportType メソッドを使用して、メンバーの親クラスまたは親インターフェイスの型参照を現在のスコープ内に作成します。
対象メンバーがグローバル変数またはグローバル関数の場合 (つまり、クラスまたはインターフェイスのメンバーでない場合)、IMetaDataEmit::DefineModuleRef メソッドを使用して、メンバーの親モジュールのモジュール参照を現在のスコープ内に作成します。
コンパイラまたはリンカーを使用して、対象メンバーの親を後で解決する場合、tkParent に mdTokenNil を渡します。 .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