MetadataReader Класс

Определение

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

public ref class MetadataReader sealed
public sealed class MetadataReader
type MetadataReader = class
Public NotInheritable 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 только с доверенными метаданными, такими как метаданные из доверенных сборок.

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

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

Формат метаданных CLI определяется спецификацией ECMA-335. Дополнительные сведения см. в статье "Стандартная среда ECMA-335 — инфраструктура общего языка( CLI) на веб-сайте Ecma International.

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

Имя Описание
MetadataReader(Byte*, Int32, MetadataReaderOptions, MetadataStringDecoder)

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

MetadataReader(Byte*, Int32, MetadataReaderOptions)

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

MetadataReader(Byte*, Int32)

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

Свойства

Имя Описание
AssemblyFiles

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

AssemblyReferences

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

CustomAttributes

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

DeclarativeSecurityAttributes

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

EventDefinitions

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

ExportedTypes

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

FieldDefinitions

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

IsAssembly

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

ManifestResources

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

MemberReferences

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

MetadataKind

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

MetadataVersion

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

MethodDefinitions

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

Options

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

PropertyDefinitions

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

StringComparer

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

TypeDefinitions

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

TypeReferences

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

Методы

Имя Описание
Equals(Object)

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

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

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetAssemblyFile(AssemblyFileHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetAssemblyReference(AssemblyReferenceHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetBlobBytes(BlobHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetBlobContent(BlobHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetBlobReader(BlobHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetConstant(ConstantHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetCustomAttribute(CustomAttributeHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetCustomAttributes(EntityHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetEventDefinition(EventDefinitionHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetExportedType(ExportedTypeHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetFieldDefinition(FieldDefinitionHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetGenericParameter(GenericParameterHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetGenericParameterConstraint(GenericParameterConstraintHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetGuid(GuidHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetHashCode()

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

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

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetManifestResource(ManifestResourceHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetMemberReference(MemberReferenceHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetMethodDefinition(MethodDefinitionHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetMethodImplementation(MethodImplementationHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetMethodSpecification(MethodSpecificationHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetModuleDefinition()

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetModuleReference(ModuleReferenceHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetNamespaceDefinition(NamespaceDefinitionHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetNamespaceDefinitionRoot()

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetParameter(ParameterHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetPropertyDefinition(PropertyDefinitionHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetStandaloneSignature(StandaloneSignatureHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetString(NamespaceDefinitionHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetString(StringHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetType()

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

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

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetTypeReference(TypeReferenceHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetTypeSpecification(TypeSpecificationHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

GetUserString(UserStringHandle)

Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335.

MemberwiseClone()

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

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

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

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

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

Имя Описание
GetEditAndContinueLogEntries(MetadataReader)

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

GetEditAndContinueMapEntries(MetadataReader)

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

GetHeapMetadataOffset(MetadataReader, HeapIndex)

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

GetHeapOffset(MetadataReader, Handle)

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

GetHeapSize(MetadataReader, HeapIndex)

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

GetNextHandle(MetadataReader, BlobHandle)

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

GetNextHandle(MetadataReader, StringHandle)

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

GetNextHandle(MetadataReader, UserStringHandle)

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

GetRowNumber(MetadataReader, EntityHandle)

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

GetTableMetadataOffset(MetadataReader, TableIndex)

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

GetTableRowCount(MetadataReader, TableIndex)

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

GetTableRowSize(MetadataReader, TableIndex)

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

GetToken(MetadataReader, Handle)

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

GetTypesWithEvents(MetadataReader)

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

GetTypesWithProperties(MetadataReader)

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

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