Compartilhar via


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

Cuidado

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.

CustomDebugInformation

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

DebugMetadataHeader

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

DeclarativeSecurityAttributes

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

Documents

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.

ImportScopes

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.

LocalConstants

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

LocalScopes

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

LocalVariables

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

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.

MetadataLength

Obtém o comprimento dos dados subjacentes.

MetadataPointer

Obtém o ponteiro para os dados subjacentes.

MetadataVersion

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

MethodDebugInformation

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

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.

UTF8Decoder

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

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.

GetAssemblyName(String)

Obtém o AssemblyName arquivo para determinado arquivo.

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.

GetBlobReader(StringHandle)

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.

GetCustomDebugInformation(CustomDebugInformationHandle)

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

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

GetDocument(DocumentHandle)

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 de hash padrão.

(Herdado de Object)
GetImportScope(ImportScopeHandle)

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

GetInterfaceImplementation(InterfaceImplementationHandle)

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

GetLocalConstant(LocalConstantHandle)

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

GetLocalScope(LocalScopeHandle)

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

GetLocalScopes(MethodDebugInformationHandle)

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

GetLocalScopes(MethodDefinitionHandle)

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

GetLocalVariable(LocalVariableHandle)

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.

GetMethodDebugInformation(MethodDebugInformationHandle)

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

GetMethodDebugInformation(MethodDefinitionHandle)

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(DocumentNameBlobHandle)

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, EntityHandle)

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

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.

ResolveSignatureTypeKind(MetadataReader, EntityHandle, Byte)

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

Aplica-se a