Partager via


IMetaDataEmit::DefineImportMember, méthode

Crée une référence au membre spécifié d’un type ou d’un module défini en dehors de l’étendue actuelle, et définit un jeton pour cette référence.

Syntaxe

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 de l’assembly spécifié par pAssemImport.

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

pImport
[in] Interface IMetaDataImport qui représente l’étendue des 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 une 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 dans lequel le membre cible est importé.

tkParent
[in] Jeton mdTypeRef ou mdModuleRef pour le type ou le module, respectivement, qui est propriétaire du membre cible.

pmr
[out] Jeton mdMemberRef défini dans l’étendue actuelle pour la référence du membre.

Remarques

La méthode DefineImportMember recherche le membre, spécifié par mbMember, qui est défini dans une autre étendue, 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 l’étendue actuelle afin de créer la référence du membre.

En règle générale, avant d’utiliser la méthode DefineImportMember, vous devez créer dans l’étendue actuelle une référence de type ou une référence de module pour la classe, l’interface ou le module parent 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 si elle sera résolue ultérieurement par le compilateur ou l’éditeur de liens. Pour récapituler :

  • 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 l’étendue actuelle pour la classe parente ou l’interface parente du membre.

  • Si le membre cible est une variable globale ou une fonction globale (c’est-à-dire s’il n’est pas membre d’une classe ou d’une interface), utilisez la méthode IMetaDataEmit::DefineModuleRef pour créer une référence de module dans l’étendue actuelle pour le module parent du membre.

  • Si le parent du membre cible sera résolu ultérieurement par le compilateur ou l’éditeur de liens, passez mdTokenNil dans tkParent. Le seul scénario où ceci s’applique est quand une fonction globale ou une variable globale est importée depuis un fichier .obj qui sera au final lié au module actuel, et que les métadonnées seront fusionnées.

Configuration requise

Plateformes : Consultez Configuration requise.

En-tête : Cor.h

Bibliothèque : Utilisée comme ressource dans MSCorEE.dll

Versions de .NET Framework : Disponible à partir de la version 1.0

Voir aussi