Compartilhar via


Método IMetaDataEmit::DefineImportMember

Cria uma referência ao membro especificado de um tipo ou módulo definido fora do escopo atual e define um token para essa referência.

Sintaxe

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

Parâmetros

pAssemImport
[in] Uma interface IMetaDataAssemblyImport que representa o assembly do qual o membro de destino é importado.

pbHashValue
[in] Uma matriz que contém o hash do assembly especificado por pAssemImport.

cbHashValue
[in] O número de bytes na matriz pbHashValue.

pImport
[in] Uma interface IMetaDataImport que representa o escopo de metadados do qual o membro de destino é importado.

mbMember
[in] O token de metadados que especifica o membro de destino. O token pode ser um mdMethodDef (para um método membro), mdProperty (para uma propriedade membro) ou mdFieldDef (para um campo membro).

pAssemEmit
[in] Uma interface IMetaDataAssemblyEmit que representa o assembly no qual o membro de destino é importado.

tkParent
[in] O token mdTypeRef ou mdModuleRef do tipo ou módulo, respectivamente, que possui o membro de destino.

pmr
[out] O token mdMemberRef definido no escopo atual para a referência de membro.

Comentários

O método DefineImportMember procura o membro, especificado por mbMember, que é definido em outro escopo, especificado por pImport, e recupera suas propriedades. Ele usa essas informações para chamar o método IMetaDataEmit::DefineMemberRef no escopo atual para criar a referência de membro.

Geralmente, antes de usar o método DefineImportMember, você precisa criar, no escopo atual, uma referência de tipo ou referência de módulo para a classe pai, interface ou módulo do membro de destino. O token de metadados para essa referência é então passado no argumento tkParent. Você não precisa criar uma referência ao pai do membro de destino se ela for resolvida posteriormente pelo compilador ou pelo vinculador. Para resumir:

  • Se o membro de destino for um campo ou método, use o método IMetaDataEmit::DefineTypeRefByName ou IMetaDataEmit::DefineImportType para criar uma referência de tipo, no escopo atual, para a classe pai ou a interface pai do membro.

  • Se o membro de destino for uma variável global ou uma função global (ou seja, não um membro de uma classe ou interface), use o método IMetaDataEmit::DefineModuleRef para criar uma referência de módulo, no escopo atual, para o módulo pai do membro.

  • Se o pai do membro de destino for resolvido posteriormente pelo compilador ou pelo vinculador, passe mdTokenNil em tkParent. O único cenário em que isso se aplica é quando uma função global ou variável global está sendo importada de um arquivo .obj que, em última análise, será vinculado ao módulo atual e aos metadados mesclados.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: Cor.h

Biblioteca: usada como um recurso no MsCorEE.dll

Versões do .NET Framework: Disponíveis desde a versão 1.0

Confira também