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. |
| CustomDebugInformation |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| DebugMetadataHeader |
Получает сведения, декодированные из потока #Pdb или |
| DeclarativeSecurityAttributes |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| Documents |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| EventDefinitions |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| ExportedTypes |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| FieldDefinitions |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| ImportScopes |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| IsAssembly |
Возвращает значение, указывающее, представляют ли метаданные сборку. |
| LocalConstants |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| LocalScopes |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| LocalVariables |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| ManifestResources |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| MemberReferences |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| MetadataKind |
Возвращает тип метаданных. |
| MetadataLength |
Возвращает длину базовых данных. |
| MetadataPointer |
Возвращает указатель на базовые данные. |
| MetadataVersion |
Возвращает строку версии, считываемую из заголовка метаданных. |
| MethodDebugInformation |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| MethodDefinitions |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| Options |
Возвращает переданный MetadataReaderOptions конструктору. |
| PropertyDefinitions |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| StringComparer |
Возвращает средство сравнения, используемое для сравнения строк, хранящихся в метаданных. |
| TypeDefinitions |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| TypeReferences |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| UTF8Decoder |
Получает декодатор, используемый средством чтения для создания строковых экземпляров из последовательностей байтов, закодированных в кодировке UTF8. |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetAssemblyDefinition() |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetAssemblyFile(AssemblyFileHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetAssemblyName(String) |
Возвращает заданный AssemblyName файл. |
| GetAssemblyReference(AssemblyReferenceHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetBlobBytes(BlobHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetBlobContent(BlobHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetBlobReader(BlobHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetBlobReader(StringHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetConstant(ConstantHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetCustomAttribute(CustomAttributeHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetCustomAttributes(EntityHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetCustomDebugInformation(CustomDebugInformationHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetCustomDebugInformation(EntityHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetDocument(DocumentHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки 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) |
| GetImportScope(ImportScopeHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetInterfaceImplementation(InterfaceImplementationHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetLocalConstant(LocalConstantHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetLocalScope(LocalScopeHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetLocalScopes(MethodDebugInformationHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetLocalScopes(MethodDefinitionHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetLocalVariable(LocalVariableHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetManifestResource(ManifestResourceHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetMemberReference(MemberReferenceHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetMethodDebugInformation(MethodDebugInformationHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки ECMA 335. |
| GetMethodDebugInformation(MethodDefinitionHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки 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(DocumentNameBlobHandle) |
Считывает метаданные, определенные спецификацией ИНТЕРФЕЙСА командной строки 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) |
Возвращает смещение данных кучи метаданных, которые соответствуют указанному |
| GetHeapSize(MetadataReader, HeapIndex) |
Возвращает размер указанной кучы. |
| GetNextHandle(MetadataReader, BlobHandle) |
Возвращает дескриптор, который следует заданному в Blob куче или nil дескрипторBlob, если он последний. |
| GetNextHandle(MetadataReader, StringHandle) |
Возвращает дескриптор строки, которая следует заданной в строковой куче, или nil-дескриптор, если он последний. |
| GetNextHandle(MetadataReader, UserStringHandle) |
Возвращает дескриптор UserString, который следует заданному в куче UserString или nil-дескриптор, если это последний. |
| GetRowNumber(MetadataReader, EntityHandle) |
Возвращает номер строки записи таблицы метаданных, которая соответствует заданному |
| GetTableMetadataOffset(MetadataReader, TableIndex) |
Возвращает смещение от начала метаданных к указанной таблице. |
| GetTableRowCount(MetadataReader, TableIndex) |
Возвращает количество строк в указанной таблице. |
| GetTableRowSize(MetadataReader, TableIndex) |
Возвращает размер строки в указанной таблице. |
| GetToken(MetadataReader, EntityHandle) |
Возвращает маркер метаданных указанного |
| GetToken(MetadataReader, Handle) |
Возвращает маркер метаданных указанного |
| GetTypesWithEvents(MetadataReader) |
Перечисление типов, определяющих одно или несколько событий. |
| GetTypesWithProperties(MetadataReader) |
Перечисление типов, определяющих одно или несколько свойств. |
| ResolveSignatureTypeKind(MetadataReader, EntityHandle, Byte) |
Учитывая дескриптор типа и тип необработанного типа, найденный в большом двоичном объекте сигнатуры, определяет, является ли целевой тип типом значения или ссылочным типом. |