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