MetadataReader Classe

Definição

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

public ref class MetadataReader sealed
public sealed class MetadataReader
type MetadataReader = class
Public NotInheritable Class MetadataReader
Herança
MetadataReader

Exemplos

Este exemplo mostra como criar MetadataReader para um assembly e ler todas as definições de tipo dele:

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}");
}

Comentários

Caution

Esse tipo não foi projetado para lidar com entradas não confiáveis. Metadados malformados ou mal-intencionados podem causar comportamento inesperado, incluindo acesso à memória fora dos limites, falhas ou travamentos. MetadataReader Use apenas com metadados confiáveis, como metadados de assemblies confiáveis.

MetadataReader lê o conteúdo de tabelas e heaps dos metadados da CLI especificados. Ele opera constructos de baixo nível, como definições de tipo e método. Para obter uma API de nível superior para inspecionar o conteúdo de assemblies usando constructos de reflexão, consulte MetadataLoadContext.

Você pode usar construtores, como MetadataReader(Byte*, Int32), para criar uma instância de um determinado local de MetadataReader memória. Para ler metadados do arquivo de assembly executável portátil, crie PEReader e use o método de GetMetadataReader(PEReader) extensão.

O formato dos metadados da CLI é definido pela especificação ECMA-335. Para obter mais informações, consulte Standard ECMA-335 – CLI (Common Language Infrastructure) no site da Ecma International.

Construtores

Nome Description
MetadataReader(Byte*, Int32, MetadataReaderOptions, MetadataStringDecoder)

Inicializa uma nova instância da classe a MetadataReader partir dos metadados armazenados no local de memória especificado.

MetadataReader(Byte*, Int32, MetadataReaderOptions)

Inicializa uma nova instância da classe a MetadataReader partir dos metadados armazenados no local de memória especificado.

MetadataReader(Byte*, Int32)

Inicializa uma nova instância da classe a MetadataReader partir dos metadados armazenados no local de memória especificado.

Propriedades

Nome Description
AssemblyFiles

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

AssemblyReferences

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

CustomAttributes

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

DeclarativeSecurityAttributes

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

EventDefinitions

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

ExportedTypes

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

FieldDefinitions

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

IsAssembly

Obtém um valor que indica se os metadados representam um assembly.

ManifestResources

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

MemberReferences

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

MetadataKind

Obtém o tipo de metadados.

MetadataVersion

Obtém a cadeia de caracteres de versão lida do cabeçalho de metadados.

MethodDefinitions

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

Options

Obtém a passagem MetadataReaderOptions para o construtor.

PropertyDefinitions

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

StringComparer

Obtém o comparador usado para comparar cadeias de caracteres armazenadas em metadados.

TypeDefinitions

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

TypeReferences

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

Métodos

Nome Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetAssemblyDefinition()

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetAssemblyFile(AssemblyFileHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetAssemblyReference(AssemblyReferenceHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetBlobBytes(BlobHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetBlobContent(BlobHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetBlobReader(BlobHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetConstant(ConstantHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetCustomAttribute(CustomAttributeHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetCustomAttributes(EntityHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetEventDefinition(EventDefinitionHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetExportedType(ExportedTypeHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetFieldDefinition(FieldDefinitionHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetGenericParameter(GenericParameterHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetGenericParameterConstraint(GenericParameterConstraintHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetGuid(GuidHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetHashCode()

Serve como a função hash predefinida.

(Herdado de Object)
GetInterfaceImplementation(InterfaceImplementationHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetManifestResource(ManifestResourceHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetMemberReference(MemberReferenceHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetMethodDefinition(MethodDefinitionHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetMethodImplementation(MethodImplementationHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetMethodSpecification(MethodSpecificationHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetModuleDefinition()

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetModuleReference(ModuleReferenceHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetNamespaceDefinition(NamespaceDefinitionHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetNamespaceDefinitionRoot()

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetParameter(ParameterHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetPropertyDefinition(PropertyDefinitionHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetStandaloneSignature(StandaloneSignatureHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetString(NamespaceDefinitionHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetString(StringHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetTypeDefinition(TypeDefinitionHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetTypeReference(TypeReferenceHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetTypeSpecification(TypeSpecificationHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

GetUserString(UserStringHandle)

Lê metadados conforme definido pela especificação da CLI do ECMA 335.

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Métodos de Extensão

Nome Description
GetEditAndContinueLogEntries(MetadataReader)

Enumera entradas do log enc.

GetEditAndContinueMapEntries(MetadataReader)

Enumera entradas do mapa enc.

GetHeapMetadataOffset(MetadataReader, HeapIndex)

Retorna o deslocamento do início dos metadados para o heap especificado.

GetHeapOffset(MetadataReader, Handle)

Obtém o deslocamento de dados de heap de metadados que correspondem ao especificado handle no contexto de reader.

GetHeapSize(MetadataReader, HeapIndex)

Retorna o tamanho do heap especificado.

GetNextHandle(MetadataReader, BlobHandle)

Retorna o identificador para o Blob que segue o determinado no Blob heap ou um identificador nulo se for o último.

GetNextHandle(MetadataReader, StringHandle)

Retorna o identificador para a cadeia de caracteres que segue o determinado no heap de cadeia de caracteres ou um identificador nulo se for o último.

GetNextHandle(MetadataReader, UserStringHandle)

Retorna um identificador para o UserString que segue o determinado no heap UserString ou um identificador nulo se for o último.

GetRowNumber(MetadataReader, EntityHandle)

Obtém o número de linha de uma entrada de tabela de metadados que corresponde ao especificado handle no contexto de reader.

GetTableMetadataOffset(MetadataReader, TableIndex)

Retorna o deslocamento do início dos metadados para a tabela especificada.

GetTableRowCount(MetadataReader, TableIndex)

Retorna o número de linhas na tabela especificada.

GetTableRowSize(MetadataReader, TableIndex)

Retorna o tamanho de uma linha na tabela especificada.

GetToken(MetadataReader, Handle)

Obtém o token de metadados do especificado handle no contexto de reader.

GetTypesWithEvents(MetadataReader)

Enumerar tipos que definem um ou mais eventos.

GetTypesWithProperties(MetadataReader)

Enumerar tipos que definem uma ou mais propriedades.

Aplica-se a