MetadataReader Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Считывает метаданные в соответствии с определением в спецификации CLI 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 считывает содержимое таблиц и кучи из указанных метаданных 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 или значение |
| 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) |
Возвращает смещение данных, соответствующих указанному дескриптору |
| GetRowNumber(MetadataReader, EntityHandle) |
Возвращает номер строки записи, соответствующей указанному дескриптору |
| GetToken(MetadataReader, EntityHandle) |
Возвращает токен метаданных для указанного дескриптора |
| GetToken(MetadataReader, Handle) |
Возвращает токен метаданных для указанного дескриптора |