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


Метод 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::D efineMemberRef в текущем область для создания ссылки на член.

Как правило, перед использованием DefineImportMember метода необходимо создать в текущем область ссылку на тип или ссылку на модуль для родительского класса, интерфейса или модуля целевого элемента. Затем маркер метаданных для этой ссылки передается в аргументе tkParent . Вам не нужно создавать ссылку на родительский элемент целевого элемента, если она будет разрешена позже компилятором или компоновщиком. Подведение итогов.

  • Если целевой элемент является полем или методом, используйте метод IMetaDataEmit::D efineTypeRefByName или IMetaDataEmit::D efineImportType, чтобы создать ссылку на тип в текущем область для родительского класса или родительского интерфейса элемента.

  • Если целевой элемент является глобальной переменной или глобальной функцией (то есть не членом класса или интерфейса), используйте метод IMetaDataEmit::D efineModuleRef, чтобы создать ссылку на модуль в текущем область для родительского модуля элемента.

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

Требования

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

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

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

платформа .NET Framework версии: доступно с версии 1.0.

См. также раздел