MetadataReader Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
| 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 |
| 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 |
| 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 |
| GetToken(MetadataReader, Handle) |
Obtém o token de metadados do especificado |
| 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. |