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.

DeclarativeSecurityAttributes

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.

IsAssembly

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

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.

MetadataVersion

Obtém a string de versão lida a partir do cabeçalho de metadados.

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.

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.

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.

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.

GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle)

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)
GetInterfaceImplementation(InterfaceImplementationHandle)

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.

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(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, 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.

Aplica-se a