Partager via


IMetaDataEmit::DefineImportMember, méthode

Crée une référence au membre spécifié d'un type ou d'un module qui est défini à l'extérieur de la portée actuelle, et définit un jeton pour cette référence.

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 
);

Paramètres

  • pAssemImport
    [in] Interface IMetaDataAssemblyImport qui représente l'assembly à partir duquel le membre cible est importé.

  • pbHashValue
    [in] Tableau qui contient le hachage pour l'assembly spécifié par pAssemImport.

  • cbHashValue
    [in] Nombre d'octets dans le tableau pbHashValue.

  • pImport
    [in] Interface IMetaDataImport qui représente la portée de métadonnées à partir de laquelle le membre cible est importé.

  • mbMember
    [in] Jeton de métadonnées qui spécifie le membre cible. Le jeton peut être un jeton mdMethodDef (pour une méthode membre), mdProperty (pour une propriété membre) ou mdFieldDef (pour un champ membre).

  • pAssemEmit
    [in] Interface IMetaDataAssemblyEmit qui représente l'assembly à partir duquel le membre cible est importé.

  • tkParent
    [in] Jeton mdTypeRef ou mdModuleRef pour le type ou le module, respectivement, qui possède le membre cible.

  • pmr
    [out] Jeton mdMemberRef qui est défini dans la portée actuelle pour la référence de membre.

Notes

La méthode DefineImportMember recherche le membre, spécifié par mbMember, qui est défini dans une autre portée spécifiée par pImport, et récupère ses propriétés. Elle utilise ces informations pour appeler la méthode IMetaDataEmit::DefineMemberRef dans la portée actuelle pour créer la référence de membre.

En général, avant d'utiliser la méthode DefineImportMember, vous devez créer, dans la portée actuelle, une référence de type ou une référence de module pour la classe parente, l'interface ou le module du membre cible. Le jeton de métadonnées pour cette référence est ensuite passé dans l'argument tkParent. Vous n'avez pas besoin de créer une référence au parent du membre cible s'il doit être résolu ultérieurement par le compilateur ou l'éditeur de liens. En résumé :

  • Si le membre cible est un champ ou une méthode, utilisez la méthode IMetaDataEmit::DefineTypeRefByName ou IMetaDataEmit::DefineImportType pour créer une référence de type, dans la portée actuelle, pour la classe parente ou l'interface parente du membre.

  • Si le membre cible est une variable globale ou une fonction globale (autrement dit, pas un membre d'une classe ou d'une interface), utilisez la méthode IMetaDataEmit::DefineModuleRef pour créer une référence de module, dans la portée actuelle, pour le module parent du membre.

  • Si le parent du membre cible doit être résolu ultérieurement par le compilateur ou l'éditeur de liens, passez mdTokenNil dans tkParent. Le seul scénario dans lequel cela s'applique est le suivant : une fonction globale ou une variable globale est importée à partir d'un fichier .obj qui sera finalement lié dans le module actuel et les métadonnées fusionnées.

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

En-tête : Cor.h

Bibliothèque : utilisée en tant que ressource dans MSCorEE.dll

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Voir aussi

Référence

IMetaDataEmit, interface

IMetaDataEmit2, interface