Partilhar via


MetadataReader Classe

Definição

Lê os metadados conforme definido pela especificação de 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

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 para um determinado local de MetadataReader memória. Para ler metadados do arquivo de assembly executável portátil, crie PEReader e use o GetMetadataReader(PEReader) método de 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 do Ecma International.

Construtores

MetadataReader(Byte*, Int32, MetadataReaderOptions, MetadataStringDecoder)

Inicializa uma nova instância da classe MetadataReader usando os metadados armazenados no local da memória determinado.

MetadataReader(Byte*, Int32, MetadataReaderOptions)

Inicializa uma nova instância da classe MetadataReader usando os metadados armazenados no local da memória determinado.

MetadataReader(Byte*, Int32)

Inicializa uma nova instância da classe MetadataReader usando os metadados armazenados no local da memória determinado.

Propriedades

AssemblyFiles

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

AssemblyReferences

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

CustomAttributes

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

CustomDebugInformation

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

DebugMetadataHeader

Obtém as informações decodificadas de fluxo #Pdb ou null quando o fluxo não está presente.

DeclarativeSecurityAttributes

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

Documents

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

EventDefinitions

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

ExportedTypes

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

FieldDefinitions

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

ImportScopes

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

IsAssembly

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

LocalConstants

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

LocalScopes

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

LocalVariables

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

ManifestResources

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

MemberReferences

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

MetadataKind

Obtém o tipo de metadados.

MetadataLength

Obtém o comprimento dos dados subjacentes.

MetadataPointer

Obtém o ponteiro para os dados subjacentes.

MetadataVersion

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

MethodDebugInformation

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

MethodDefinitions

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

Options

Obtém o MetadataReaderOptions passado para o construtor.

PropertyDefinitions

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

StringComparer

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

TypeDefinitions

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

TypeReferences

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

UTF8Decoder

Obtém o decodificador usado pelo leitor para produzir instâncias de cadeia de caracteres de sequências de bytes codificados em UTF8.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetAssemblyDefinition()

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

GetAssemblyFile(AssemblyFileHandle)

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

GetAssemblyName(String)

Obtém o AssemblyName para determinado arquivo.

GetAssemblyReference(AssemblyReferenceHandle)

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

GetBlobBytes(BlobHandle)

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

GetBlobContent(BlobHandle)

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

GetBlobReader(BlobHandle)

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

GetBlobReader(StringHandle)

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

GetConstant(ConstantHandle)

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

GetCustomAttribute(CustomAttributeHandle)

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

GetCustomAttributes(EntityHandle)

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

GetCustomDebugInformation(CustomDebugInformationHandle)

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

GetCustomDebugInformation(EntityHandle)

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

GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle)

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

GetDocument(DocumentHandle)

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

GetEventDefinition(EventDefinitionHandle)

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

GetExportedType(ExportedTypeHandle)

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

GetFieldDefinition(FieldDefinitionHandle)

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

GetGenericParameter(GenericParameterHandle)

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

GetGenericParameterConstraint(GenericParameterConstraintHandle)

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

GetGuid(GuidHandle)

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

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetImportScope(ImportScopeHandle)

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

GetInterfaceImplementation(InterfaceImplementationHandle)

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

GetLocalConstant(LocalConstantHandle)

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

GetLocalScope(LocalScopeHandle)

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

GetLocalScopes(MethodDebugInformationHandle)

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

GetLocalScopes(MethodDefinitionHandle)

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

GetLocalVariable(LocalVariableHandle)

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

GetManifestResource(ManifestResourceHandle)

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

GetMemberReference(MemberReferenceHandle)

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

GetMethodDebugInformation(MethodDebugInformationHandle)

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

GetMethodDebugInformation(MethodDefinitionHandle)

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

GetMethodDefinition(MethodDefinitionHandle)

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

GetMethodImplementation(MethodImplementationHandle)

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

GetMethodSpecification(MethodSpecificationHandle)

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

GetModuleDefinition()

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

GetModuleReference(ModuleReferenceHandle)

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

GetNamespaceDefinition(NamespaceDefinitionHandle)

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

GetNamespaceDefinitionRoot()

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

GetParameter(ParameterHandle)

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

GetPropertyDefinition(PropertyDefinitionHandle)

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

GetStandaloneSignature(StandaloneSignatureHandle)

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

GetString(DocumentNameBlobHandle)

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

GetString(NamespaceDefinitionHandle)

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

GetString(StringHandle)

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

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetTypeDefinition(TypeDefinitionHandle)

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

GetTypeReference(TypeReferenceHandle)

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

GetTypeSpecification(TypeSpecificationHandle)

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

GetUserString(UserStringHandle)

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

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Métodos de Extensão

GetEditAndContinueLogEntries(MetadataReader)

Enumera as entradas do log do EnC.

GetEditAndContinueMapEntries(MetadataReader)

Enumera as entradas do mapa do EnC.

GetHeapMetadataOffset(MetadataReader, HeapIndex)

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

GetHeapSize(MetadataReader, HeapIndex)

Retorna o tamanho do heap especificado.

GetNextHandle(MetadataReader, BlobHandle)

Retorna o identificador para o Blob que segue o fornecido no heap de Blob ou um identificador nil caso ele seja o último.

GetNextHandle(MetadataReader, StringHandle)

Retorna o identificador para a cadeia de caracteres que segue o fornecido no heap de cadeia de caracteres ou um identificador nil caso ele seja o último.

GetNextHandle(MetadataReader, UserStringHandle)

Retorna o identificador para a UserString que segue o fornecido no heap de UserString ou um identificador nil caso ele seja o último.

GetTableMetadataOffset(MetadataReader, TableIndex)

Retorna o deslocamento do início dos metadados até 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.

GetTypesWithEvents(MetadataReader)

Tipos enumerados que definem um ou mais eventos.

GetTypesWithProperties(MetadataReader)

Tipos enumerados que definem uma ou mais propriedades.

ResolveSignatureTypeKind(MetadataReader, EntityHandle, Byte)

Fornecidos um identificador de tipo e um tipo bruto, encontrados em um blob de assinatura, determina se o tipo de destino é um tipo de valor ou de referência.

GetHeapOffset(MetadataReader, Handle)

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

GetRowNumber(MetadataReader, EntityHandle)

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

GetToken(MetadataReader, EntityHandle)

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

GetToken(MetadataReader, Handle)

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

Aplica-se a