다음을 통해 공유


IMetaDataEmit::DefineImportMember 메서드

현재 범위 밖에 정의된 지정된 형식 또는 모듈 멤버에 대한 참조를 만들고 해당 참조에 대한 토큰을 정의합니다.

구문

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
[in] 대상 멤버를 가져올 어셈블리를 나타내는 IMetaDataAssemblyImport 인터페이스입니다.

pbHashValue
[in] pAssemImport에 지정된 어셈블리의 해시를 포함하는 배열입니다.

cbHashValue
[in] pbHashValue 배열의 바이트 수입니다.

pImport
[in] 대상 멤버를 가져올 메타데이터 범위를 나타내는 IMetaDataImport 인터페이스입니다.

mbMember
[in] 대상 멤버를 지정하는 메타데이터 토큰입니다. 토큰은 mdMethodDef(멤버 메서드의 경우), mdProperty(멤버 속성의 경우) 또는 mdFieldDef(멤버 필드의 경우) 토큰일 수 있습니다.

pAssemEmit
[in] 대상 멤버를 가져올 어셈블리를 나타내는 IMetaDataAssemblyEmit 인터페이스입니다.

tkParent
[in] 각각 대상 멤버를 소유하는 형식 또는 모듈에 대한 mdTypeRef 또는 mdModuleRef 토큰입니다.

pmr
[out] 멤버 참조의 현재 범위에 정의된 mdMemberRef 토큰입니다.

설명

DefineImportMember 메서드는 pImport로 지정된 다른 범위에 정의되어 있는 mbMember로 지정된 멤버를 조회하고 해당 속성을 검색합니다. 이 정보를 통해 현재 범위에서 IMetaDataEmit::DefineMemberRef 메서드를 호출하여 멤버 참조를 만듭니다.

일반적으로 DefineImportMember 메서드를 사용하기 전에 대상 멤버의 부모 클래스, 인터페이스 또는 모듈에 대한 형식 참조 또는 모듈 참조를 현재 범위에서 만들어야 합니다. 그런 다음, 이 참조에 대한 메타데이터 토큰이 tkParent 인수에 전달됩니다. 나중에 컴파일러 또는 링커에서 확인될 경우 대상 멤버의 부모에 대한 참조를 만들 필요가 없습니다. 요약:

  • 대상 멤버가 필드 또는 메서드인 경우 IMetaDataEmit::DefineTypeRefByName 또는 IMetaDataEmit::DefineImportType 메서드를 사용하여 현재 범위에서 멤버의 부모 클래스 또는 부모 인터페이스에 대한 형식 참조를 만듭니다.

  • 대상 멤버가 전역 변수 또는 전역 함수인 경우(즉, 클래스 또는 인터페이스의 멤버가 아님) IMetaDataEmit::DefineModuleRef 메서드를 사용하여 현재 범위에서 멤버의 부모 모듈에 대한 모듈 참조를 만듭니다.

  • 나중에 컴파일러 또는 링커에서 대상 멤버의 부모를 확인하는 경우 tkParent에서 mdTokenNil을 전달합니다. 이것이 적용되는 유일한 시나리오는 전역 함수 또는 전역 변수를 궁극적으로 현재 모듈에 연결되고 메타데이터가 병합된 .obj 파일에서 가져오는 경우입니다.

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: Cor.h

라이브러리: MsCorEE.dll에서 리소스로 사용됩니다.

.NET Framework 버전: 1.0부터 사용 가능

참고 항목