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 메서드는 mbMember에 지정된 멤버, 다른 범위에 정의된 멤버 및 pImport에 지정된 멤버를 찾아 해당 속성을 검색합니다. 이 정보를 사용하여 현재 범위에 있는 IMetaDataEmit::DefineMemberRef 메서드를 호출하는 방식으로 멤버 참조를 만듭니다.
일반적으로 DefineImportMember 메서드를 사용하기 전에 대상 멤버의 부모 클래스, 인터페이스 또는 모듈에 대한 참조 형식이나 모듈 참조를 현재 범위에 만들어야 합니다. 그러면 이 참조의 메타데이터 토큰이 tkParent 인수에 전달됩니다. 나중에 컴파일러나 링커에서 해당 토큰이 확인되면 대상 멤버의 부모에 대한 참조는 만들 필요가 없습니다. 즉, 다음과 같이 수행합니다.
대상 멤버가 필드나 메서드이면 IMetaDataEmit::DefineTypeRefByName 또는 IMetaDataEmit::DefineImportType 메서드를 사용하여 멤버의 부모 클래스나 부모 인터페이스에 대한 형식 참조를 현재 범위에 만듭니다.
대상 멤버가 전역 변수이거나 전역 함수이면, 즉 클래스 또는 인터페이스의 멤버가 아니면 IMetaDataEmit::DefineModuleRef 메서드를 사용하여 멤버의 부모 모듈에 대한 모듈 참조를 현재 범위에 만듭니다.
대상 멤버의 부모가 나중에 컴파일러나 링커에서 확인되면 mdTokenNil이 tkParent에 전달됩니다. 이러한 규칙이 적용되는 유일한 경우는 전역 함수나 전역 변수를 병합되는 현재 모듈 및 메타데이터에 연결될 .obj 파일에서 가져오고 있는 때입니다.
요구 사항
플랫폼: .NET Framework 시스템 요구 사항 참조
헤더: Cor.h
라이브러리: MSCorEE.dll에서 리소스로 사용됨
.NET Framework 버전: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0