MetadataReader Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 |
| 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 |
| 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 |
| GetTypesWithEvents(MetadataReader) |
Enumere tipos que definam um ou mais eventos. |
| GetTypesWithProperties(MetadataReader) |
Enumere tipos que definam uma ou mais propriedades. |