更新 : 2007 年 11 月
現在のスコープ外で定義されているモジュールまたは型の指定したメンバへの参照を作成し、その参照のトークンを定義します。
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 のバージョン : 3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0