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) |
Инициализирует новый экземпляр класса MetadataReader на основе метаданных, хранящихся в указанном месте памяти. |
MetadataReader(Byte*, Int32, MetadataReaderOptions) |
Инициализирует новый экземпляр класса MetadataReader на основе метаданных, хранящихся в указанном месте памяти. |
MetadataReader(Byte*, Int32, MetadataReaderOptions, MetadataStringDecoder) |
Инициализирует новый экземпляр класса 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) |
Возвращает токен метаданных для указанного дескриптора |