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