Поделиться через


Метод 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.

  • Если ссылка на родительский объект целевого члена будет разрешена позже компилятором или компоновщиком, нужно задать в параметре tkParent значение mdTokenNil. Единственный сценарий, в котором это применимо, предполагает, что глобальная функция или глобальная переменная импортируется из OBJ-файла, который, в конечном итоге, будет связан с текущим модулем и объединенными метаданными.

Требования

Платформы: см. раздел Требования к системе для .NET Framework.

Заголовок: Cor.h

Библиотека: используется как ресурс в MSCorEE.dll

Версии платформы .NET Framework: 4, 3.5 с пакетом обновления 1 (SP1), 3.5, 3.0 с пакетом обновления 1 (SP1), 3.0, 2.0 с пакетом обновления 1 (SP1), 2.0, 1.1, 1.0

См. также

Ссылки

Интерфейс IMetaDataEmit

Интерфейс IMetaDataEmit2