Partager via


IMetaDataEmit::DefineImportMember Method

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.

Syntax

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

Parameters

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 pbHashValue tableau.

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 un mdMethodDef jeton (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] Le mdTypeRef ou mdModuleRef le jeton du type ou du module, respectivement, qui possède le membre cible.

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

Remarks

La DefineImportMember méthode 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. Il utilise ces informations pour appeler la méthode IMetaDataEmit ::D efineMemberRef dans l’étendue actuelle pour créer la référence de membre.

En règle générale, avant d’utiliser la DefineImportMember méthode, vous devez créer, dans l’étendue 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 de 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 sera résolu ultérieurement par le compilateur ou l’éditeur de liens. To summarize:

  • Si le membre cible est un champ ou une méthode, utilisez la méthode IMetaDataEmit ::D efineTypeRefByName ou IMetaDataEmit ::D efineImportType 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 (autrement dit, pas membre d’une classe ou d’une interface), utilisez la méthode IMetaDataEmit ::D efineModuleRef 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, transmettez mdTokenNiltkParent. Le seul scénario dans lequel cela s’applique est lorsqu’une fonction globale ou une variable globale est importée à partir d’un fichier .obj qui sera finalement lié au module actuel et aux métadonnées fusionnées.

Requirements

Plates-formes: Consultez les systèmes d’exploitation pris en charge par .NET.

Header: Cor.h

Library: CorGuids.lib

See also