MetadataReader Classe

Definição

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

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

Observações

Atenção

Este tipo não foi concebido para lidar com entradas não confiáveis. Metadados deformados ou maliciosos podem causar comportamentos inesperados, incluindo acesso à memória fora dos limites, falhas ou bloqueios. Use MetadataReader apenas com metadados confiáveis, como metadados de assemblies confiáveis.

MetadataReader lê o conteúdo das tabelas e heaps dos metadados CLI especificados. Opera construções de baixo nível, como definições de tipos e métodos. Para uma API de nível superior inspecionar o conteúdo dos assemblies usando construtos de reflexão, veja MetadataLoadContext.

Pode usar construtores, como MetadataReader(Byte*, Int32), para criar uma instância de MetadataReader para uma determinada localização de memória. Para ler metadados do ficheiro assembly Portable Executable, crie PEReader e utilize o método de GetMetadataReader(PEReader) extensão.

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

Construtores

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

Inicializa uma nova instância da MetadataReader classe a partir dos metadados armazenados na localização de memória dada.

MetadataReader(Byte*, Int32, MetadataReaderOptions)

Inicializa uma nova instância da MetadataReader classe a partir dos metadados armazenados na localização de memória dada.

MetadataReader(Byte*, Int32)

Inicializa uma nova instância da MetadataReader classe a partir dos metadados armazenados na localização de memória dada.

Propriedades

Name Description
AssemblyFiles

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

AssemblyReferences

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

CustomAttributes

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

CustomDebugInformation

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

DebugMetadataHeader

Obtém a informação decodificada #Pdb fluxo, ou null se o fluxo não estiver presente.

DeclarativeSecurityAttributes

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

Documents

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

EventDefinitions

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

ExportedTypes

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

FieldDefinitions

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

ImportScopes

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

IsAssembly

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

LocalConstants

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

LocalScopes

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

LocalVariables

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

ManifestResources

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

MemberReferences

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

MetadataKind

Recebe 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 string de versão lida a partir do cabeçalho de metadados.

MethodDebugInformation

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

MethodDefinitions

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

Options

Recebe a MetadataReaderOptions passagem para o construtor.

PropertyDefinitions

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

StringComparer

Obtém o comparador usado para comparar strings armazenadas nos metadados.

TypeDefinitions

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

TypeReferences

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

UTF8Decoder

Obtém o descodificador usado pelo leitor para produzir instâncias de string a partir de sequências de bytes codificadas em UTF8.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetAssemblyDefinition()

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

GetAssemblyFile(AssemblyFileHandle)

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

GetAssemblyName(String)

Recebe o AssemblyName para um determinado ficheiro.

GetAssemblyReference(AssemblyReferenceHandle)

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

GetBlobBytes(BlobHandle)

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

GetBlobContent(BlobHandle)

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

GetBlobReader(BlobHandle)

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

GetBlobReader(StringHandle)

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

GetConstant(ConstantHandle)

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

GetCustomAttribute(CustomAttributeHandle)

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

GetCustomAttributes(EntityHandle)

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

GetCustomDebugInformation(CustomDebugInformationHandle)

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

GetCustomDebugInformation(EntityHandle)

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

GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle)

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

GetDocument(DocumentHandle)

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

GetEventDefinition(EventDefinitionHandle)

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

GetExportedType(ExportedTypeHandle)

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

GetFieldDefinition(FieldDefinitionHandle)

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

GetGenericParameter(GenericParameterHandle)

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

GetGenericParameterConstraint(GenericParameterConstraintHandle)

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

GetGuid(GuidHandle)

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

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetImportScope(ImportScopeHandle)

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

GetInterfaceImplementation(InterfaceImplementationHandle)

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

GetLocalConstant(LocalConstantHandle)

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

GetLocalScope(LocalScopeHandle)

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

GetLocalScopes(MethodDebugInformationHandle)

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

GetLocalScopes(MethodDefinitionHandle)

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

GetLocalVariable(LocalVariableHandle)

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

GetManifestResource(ManifestResourceHandle)

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

GetMemberReference(MemberReferenceHandle)

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

GetMethodDebugInformation(MethodDebugInformationHandle)

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

GetMethodDebugInformation(MethodDefinitionHandle)

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

GetMethodDefinition(MethodDefinitionHandle)

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

GetMethodImplementation(MethodImplementationHandle)

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

GetMethodSpecification(MethodSpecificationHandle)

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

GetModuleDefinition()

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

GetModuleReference(ModuleReferenceHandle)

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

GetNamespaceDefinition(NamespaceDefinitionHandle)

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

GetNamespaceDefinitionRoot()

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

GetParameter(ParameterHandle)

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

GetPropertyDefinition(PropertyDefinitionHandle)

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

GetStandaloneSignature(StandaloneSignatureHandle)

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

GetString(DocumentNameBlobHandle)

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

GetString(NamespaceDefinitionHandle)

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

GetString(StringHandle)

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

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetTypeDefinition(TypeDefinitionHandle)

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

GetTypeReference(TypeReferenceHandle)

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

GetTypeSpecification(TypeSpecificationHandle)

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

GetUserString(UserStringHandle)

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

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Métodos da Extensão

Name Description
GetEditAndContinueLogEntries(MetadataReader)

Enumera entradas do registo EnC.

GetEditAndContinueMapEntries(MetadataReader)

Enumera as entradas do mapa EnC.

GetHeapMetadataOffset(MetadataReader, HeapIndex)

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

GetHeapOffset(MetadataReader, Handle)

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

GetHeapSize(MetadataReader, HeapIndex)

Devolve o tamanho do heap especificado.

GetNextHandle(MetadataReader, BlobHandle)

Devolve o cabo ao Blob que segue o dado no Blob heap ou um handle zero se for o último.

GetNextHandle(MetadataReader, StringHandle)

Devolve o handle a à string que segue a dada no heap de cadeia, ou um handle nil se for o último.

GetNextHandle(MetadataReader, UserStringHandle)

Devolve o handle a ao UserString que segue o dado no heap UserString ou um handle nil se for o último.

GetRowNumber(MetadataReader, EntityHandle)

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

GetTableMetadataOffset(MetadataReader, TableIndex)

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

GetTableRowCount(MetadataReader, TableIndex)

Devolve o número de linhas na tabela especificada.

GetTableRowSize(MetadataReader, TableIndex)

Devolve o tamanho de uma linha na tabela especificada.

GetToken(MetadataReader, EntityHandle)

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

GetToken(MetadataReader, Handle)

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

GetTypesWithEvents(MetadataReader)

Enumere tipos que definam um ou mais eventos.

GetTypesWithProperties(MetadataReader)

Enumere tipos que definam uma ou mais propriedades.

ResolveSignatureTypeKind(MetadataReader, EntityHandle, Byte)

Dado um handle de tipo e um tipo de tipo bruto encontrado numa blob de assinatura, determina se o tipo alvo é um tipo de valor ou um tipo de referência.

Aplica-se a