MetadataReader Класс

Определение

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

public sealed class MetadataReader
Наследование
MetadataReader

Примеры

В этом примере показано, как создать MetadataReader сборку и прочитать из нее все определения типов:

using var fs = new FileStream("Example.dll", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
using var peReader = new PEReader(fs);

MetadataReader mr = peReader.GetMetadataReader();

foreach (TypeDefinitionHandle tdefh in mr.TypeDefinitions)
{
    TypeDefinition tdef = mr.GetTypeDefinition(tdefh);

    string ns = mr.GetString(tdef.Namespace);
    string name = mr.GetString(tdef.Name);
    Console.WriteLine($"{ns}.{name}");
}

Комментарии

MetadataReader считывает содержимое таблиц и кучи из указанных метаданных CLI. Он использует низкоуровневые конструкции, такие как определения типов и методов. Api более высокого уровня для проверки содержимого сборок с помощью конструкций отражения см. в разделе MetadataLoadContext.

Можно использовать конструкторы, такие как MetadataReader(Byte*, Int32), для создания экземпляра для заданного MetadataReader расположения в памяти. Чтобы считывать метаданные из файла сборки переносимого исполняемого файла, создайте PEReader и используйте GetMetadataReader(PEReader) метод расширения.

Формат метаданных CLI определяется спецификацией ECMA-335. Дополнительные сведения см. в статье Standard ECMA-335 — COMMON Language Infrastructure (CLI) на веб-сайте Ecma International.

Конструкторы

MetadataReader(Byte*, Int32, MetadataReaderOptions, MetadataStringDecoder)

Инициализирует новый экземпляр класса MetadataReader на основе метаданных, хранящихся в указанном месте памяти.

MetadataReader(Byte*, Int32, MetadataReaderOptions)

Инициализирует новый экземпляр класса MetadataReader на основе метаданных, хранящихся в указанном месте памяти.

MetadataReader(Byte*, Int32)

Инициализирует новый экземпляр класса MetadataReader на основе метаданных, хранящихся в указанном месте памяти.

Свойства

AssemblyFiles

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

AssemblyReferences

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

CustomAttributes

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

CustomDebugInformation

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

DebugMetadataHeader

Возвращает декодированные данные из потока #Pdb или значение null, если поток отсутствует.

DeclarativeSecurityAttributes

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

Documents

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

EventDefinitions

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

ExportedTypes

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

FieldDefinitions

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

ImportScopes

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

IsAssembly

Возвращает значение, указывающее, представляют ли метаданные сборку.

LocalConstants

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

LocalScopes

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

LocalVariables

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

ManifestResources

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

MemberReferences

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

MetadataKind

Возвращает тип метаданных.

MetadataLength

Возвращает длину базовых данных.

MetadataPointer

Возвращает указатель на базовые данные.

MetadataVersion

Возвращает строку версии, считанную из заголовка метаданных.

MethodDebugInformation

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

MethodDefinitions

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

Options

Возвращает объект MetadataReaderOptions, переданный в конструктор.

PropertyDefinitions

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

StringComparer

Возвращает функцию сравнения, которая используется для сравнения строк, хранящихся в метаданных.

TypeDefinitions

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

TypeReferences

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

UTF8Decoder

Возвращает декодер, используемый средством чтения для создания экземпляров строк на основе последовательностей байтов в кодировке UTF8.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetAssemblyDefinition()

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetAssemblyFile(AssemblyFileHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetAssemblyName(String)

Возвращает AssemblyName для заданного файла.

GetAssemblyReference(AssemblyReferenceHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetBlobBytes(BlobHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetBlobContent(BlobHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetBlobReader(BlobHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetBlobReader(StringHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetConstant(ConstantHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetCustomAttribute(CustomAttributeHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetCustomAttributes(EntityHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetCustomDebugInformation(CustomDebugInformationHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetCustomDebugInformation(EntityHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetDocument(DocumentHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetEventDefinition(EventDefinitionHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetExportedType(ExportedTypeHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetFieldDefinition(FieldDefinitionHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetGenericParameter(GenericParameterHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetGenericParameterConstraint(GenericParameterConstraintHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetGuid(GuidHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetImportScope(ImportScopeHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetInterfaceImplementation(InterfaceImplementationHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetLocalConstant(LocalConstantHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetLocalScope(LocalScopeHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetLocalScopes(MethodDebugInformationHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetLocalScopes(MethodDefinitionHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetLocalVariable(LocalVariableHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetManifestResource(ManifestResourceHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetMemberReference(MemberReferenceHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetMethodDebugInformation(MethodDebugInformationHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetMethodDebugInformation(MethodDefinitionHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetMethodDefinition(MethodDefinitionHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetMethodImplementation(MethodImplementationHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetMethodSpecification(MethodSpecificationHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetModuleDefinition()

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetModuleReference(ModuleReferenceHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetNamespaceDefinition(NamespaceDefinitionHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetNamespaceDefinitionRoot()

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetParameter(ParameterHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetPropertyDefinition(PropertyDefinitionHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetStandaloneSignature(StandaloneSignatureHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetString(DocumentNameBlobHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetString(NamespaceDefinitionHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetString(StringHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
GetTypeDefinition(TypeDefinitionHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetTypeReference(TypeReferenceHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetTypeSpecification(TypeSpecificationHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

GetUserString(UserStringHandle)

Считывает метаданные в соответствии с определением в спецификации CLI ECMA 335.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Методы расширения

GetEditAndContinueLogEntries(MetadataReader)

Перечисляет записи журнала EnC.

GetEditAndContinueMapEntries(MetadataReader)

Перечисляет записи схемы EnC.

GetHeapMetadataOffset(MetadataReader, HeapIndex)

Возвращает смещение от начала метаданных до указанной кучи.

GetHeapSize(MetadataReader, HeapIndex)

Возвращает размер указанной кучи.

GetNextHandle(MetadataReader, BlobHandle)

Возвращает маркер Blob, следующий за заданным в Blob куче, или нулевой маркер, если он является последним.

GetNextHandle(MetadataReader, StringHandle)

Возвращает маркер строки, следующей за заданной строкой в куче строк, или нулевой маркер, если она является последней.

GetNextHandle(MetadataReader, UserStringHandle)

Возвращает маркер UserString, следующего за заданным значением в куче UserString, или нулевой маркер, если он является последним.

GetTableMetadataOffset(MetadataReader, TableIndex)

Возвращает смещение от начала метаданных до указанной таблицы.

GetTableRowCount(MetadataReader, TableIndex)

Возвращает число строк в указанной таблице.

GetTableRowSize(MetadataReader, TableIndex)

Возвращает размер строки в указанной таблице.

GetTypesWithEvents(MetadataReader)

Перечисляет типы, определяющие одно или несколько событий.

GetTypesWithProperties(MetadataReader)

Перечисляет типы, определяющие одно или несколько свойств.

ResolveSignatureTypeKind(MetadataReader, EntityHandle, Byte)

При наличии обработчика типа и вида необработанного типа, находящегося в BLOB-объекте сигнатуры, определяет, является ли целевой тип типом значения или ссылочным типом.

GetHeapOffset(MetadataReader, Handle)

Возвращает смещение данных, соответствующих указанному дескриптору handle в контексте reader, в куче метаданных.

GetRowNumber(MetadataReader, EntityHandle)

Возвращает номер строки записи, соответствующей указанному дескриптору handle в контексте reader, в таблице метаданных.

GetToken(MetadataReader, EntityHandle)

Возвращает токен метаданных для указанного дескриптора handle в контексте reader.

GetToken(MetadataReader, Handle)

Возвращает токен метаданных для указанного дескриптора handle в контексте reader.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8 (package-provided), 8, 9 (package-provided), 9
.NET Framework 4.7 (package-provided), 4.7.1 (package-provided), 4.7.2 (package-provided), 4.8 (package-provided)
.NET Standard 2.0 (package-provided)
UWP 10.0