Partager via


MetadataReader Classe

Définition

Lit les métadonnées définies par la spécification CLI ECMA 335.

public ref class MetadataReader sealed
public sealed class MetadataReader
type MetadataReader = class
Public NotInheritable Class MetadataReader
Héritage
MetadataReader

Exemples

Cet exemple montre comment créer MetadataReader un assembly et lire toutes les définitions de type à partir de celui-ci :

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

Remarques

Avertissement

Ce type n’est pas conçu pour gérer les entrées non approuvées. Les métadonnées incorrectes ou malveillantes peuvent entraîner un comportement inattendu, notamment l’accès à la mémoire hors limites, les blocages ou les blocages. MetadataReader Utilisez uniquement les métadonnées approuvées, telles que les métadonnées des assemblys approuvés.

MetadataReader lit le contenu des tables et des tas à partir des métadonnées CLI spécifiées. Il exploite des constructions de bas niveau, telles que des définitions de type et de méthode. Pour qu’une API de niveau supérieur inspecte le contenu des assemblys à l’aide de constructions de réflexion, consultez MetadataLoadContext.

Vous pouvez utiliser des constructeurs, tels que MetadataReader(Byte*, Int32), pour créer une instance d’un emplacement de MetadataReader mémoire donné. Pour lire les métadonnées à partir du fichier d’assembly Exécutable portable, créez PEReader et utilisez la méthode d’extension GetMetadataReader(PEReader) .

Le format des métadonnées CLI est défini par la spécification ECMA-335. Pour plus d’informations, consultez Standard ECMA-335 - Common Language Infrastructure (CLI) sur le site Web Ecma International.

Constructeurs

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

Initialise une nouvelle instance de la MetadataReader classe à partir des métadonnées stockées à l’emplacement de mémoire donné.

MetadataReader(Byte*, Int32, MetadataReaderOptions)

Initialise une nouvelle instance de la MetadataReader classe à partir des métadonnées stockées à l’emplacement de mémoire donné.

MetadataReader(Byte*, Int32)

Initialise une nouvelle instance de la MetadataReader classe à partir des métadonnées stockées à l’emplacement de mémoire donné.

Propriétés

Nom Description
AssemblyFiles

Lit les métadonnées définies par la spécification CLI ECMA 335.

AssemblyReferences

Lit les métadonnées définies par la spécification CLI ECMA 335.

CustomAttributes

Lit les métadonnées définies par la spécification CLI ECMA 335.

CustomDebugInformation

Lit les métadonnées définies par la spécification CLI ECMA 335.

DebugMetadataHeader

Obtient les informations décodées à partir de #Pdb flux, ou null si le flux n’est pas présent.

DeclarativeSecurityAttributes

Lit les métadonnées définies par la spécification CLI ECMA 335.

Documents

Lit les métadonnées définies par la spécification CLI ECMA 335.

EventDefinitions

Lit les métadonnées définies par la spécification CLI ECMA 335.

ExportedTypes

Lit les métadonnées définies par la spécification CLI ECMA 335.

FieldDefinitions

Lit les métadonnées définies par la spécification CLI ECMA 335.

ImportScopes

Lit les métadonnées définies par la spécification CLI ECMA 335.

IsAssembly

Obtient une valeur qui indique si les métadonnées représentent un assembly.

LocalConstants

Lit les métadonnées définies par la spécification CLI ECMA 335.

LocalScopes

Lit les métadonnées définies par la spécification CLI ECMA 335.

LocalVariables

Lit les métadonnées définies par la spécification CLI ECMA 335.

ManifestResources

Lit les métadonnées définies par la spécification CLI ECMA 335.

MemberReferences

Lit les métadonnées définies par la spécification CLI ECMA 335.

MetadataKind

Obtient le type de métadonnées.

MetadataLength

Obtient la longueur des données sous-jacentes.

MetadataPointer

Obtient le pointeur vers les données sous-jacentes.

MetadataVersion

Obtient la chaîne de version lue à partir de l’en-tête de métadonnées.

MethodDebugInformation

Lit les métadonnées définies par la spécification CLI ECMA 335.

MethodDefinitions

Lit les métadonnées définies par la spécification CLI ECMA 335.

Options

Obtient le MetadataReaderOptions constructeur passé.

PropertyDefinitions

Lit les métadonnées définies par la spécification CLI ECMA 335.

StringComparer

Obtient le comparateur utilisé pour comparer les chaînes stockées dans les métadonnées.

TypeDefinitions

Lit les métadonnées définies par la spécification CLI ECMA 335.

TypeReferences

Lit les métadonnées définies par la spécification CLI ECMA 335.

UTF8Decoder

Obtient le décodeur utilisé par le lecteur pour produire des instances de chaîne à partir de séquences d’octets codées en UTF8.

Méthodes

Nom Description
Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetAssemblyDefinition()

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetAssemblyFile(AssemblyFileHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetAssemblyName(String)

Obtient le AssemblyName fichier donné.

GetAssemblyReference(AssemblyReferenceHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetBlobBytes(BlobHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetBlobContent(BlobHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetBlobReader(BlobHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetBlobReader(StringHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetConstant(ConstantHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetCustomAttribute(CustomAttributeHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetCustomAttributes(EntityHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetCustomDebugInformation(CustomDebugInformationHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetCustomDebugInformation(EntityHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetDocument(DocumentHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetEventDefinition(EventDefinitionHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetExportedType(ExportedTypeHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetFieldDefinition(FieldDefinitionHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetGenericParameter(GenericParameterHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetGenericParameterConstraint(GenericParameterConstraintHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetGuid(GuidHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetImportScope(ImportScopeHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetInterfaceImplementation(InterfaceImplementationHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetLocalConstant(LocalConstantHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetLocalScope(LocalScopeHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetLocalScopes(MethodDebugInformationHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetLocalScopes(MethodDefinitionHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetLocalVariable(LocalVariableHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetManifestResource(ManifestResourceHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetMemberReference(MemberReferenceHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetMethodDebugInformation(MethodDebugInformationHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetMethodDebugInformation(MethodDefinitionHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetMethodDefinition(MethodDefinitionHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetMethodImplementation(MethodImplementationHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetMethodSpecification(MethodSpecificationHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetModuleDefinition()

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetModuleReference(ModuleReferenceHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetNamespaceDefinition(NamespaceDefinitionHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetNamespaceDefinitionRoot()

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetParameter(ParameterHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetPropertyDefinition(PropertyDefinitionHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetStandaloneSignature(StandaloneSignatureHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetString(DocumentNameBlobHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetString(NamespaceDefinitionHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetString(StringHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
GetTypeDefinition(TypeDefinitionHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetTypeReference(TypeReferenceHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetTypeSpecification(TypeSpecificationHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

GetUserString(UserStringHandle)

Lit les métadonnées définies par la spécification CLI ECMA 335.

MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

Méthodes d’extension

Nom Description
GetEditAndContinueLogEntries(MetadataReader)

Énumère les entrées du journal EnC.

GetEditAndContinueMapEntries(MetadataReader)

Énumère les entrées de la carte EnC.

GetHeapMetadataOffset(MetadataReader, HeapIndex)

Retourne le décalage entre le début des métadonnées et le tas spécifié.

GetHeapOffset(MetadataReader, Handle)

Obtient le décalage des données de tas de métadonnées qui correspondent au spécifié handle dans le contexte de reader.

GetHeapSize(MetadataReader, HeapIndex)

Retourne la taille du tas spécifié.

GetNextHandle(MetadataReader, BlobHandle)

Retourne la poignée qui Blob suit celle donnée dans le Blob tas ou un handle nil s’il s’agit du dernier.

GetNextHandle(MetadataReader, StringHandle)

Retourne un handle à la chaîne qui suit celle donnée dans le tas de chaînes, ou un handle nil s’il s’agit du dernier.

GetNextHandle(MetadataReader, UserStringHandle)

Retourne le handle à UserString qui suit celui donné dans le tas UserString ou un handle nil s’il s’agit du dernier.

GetRowNumber(MetadataReader, EntityHandle)

Obtient le numéro de ligne d’une entrée de table de métadonnées qui correspond au spécifié handle dans le contexte de reader.

GetTableMetadataOffset(MetadataReader, TableIndex)

Retourne le décalage entre le début des métadonnées et la table spécifiée.

GetTableRowCount(MetadataReader, TableIndex)

Retourne le nombre de lignes dans la table spécifiée.

GetTableRowSize(MetadataReader, TableIndex)

Retourne la taille d’une ligne dans la table spécifiée.

GetToken(MetadataReader, EntityHandle)

Obtient le jeton de métadonnées du spécifié handle dans le contexte de reader.

GetToken(MetadataReader, Handle)

Obtient le jeton de métadonnées du spécifié handle dans le contexte de reader.

GetTypesWithEvents(MetadataReader)

Énumérez les types qui définissent un ou plusieurs événements.

GetTypesWithProperties(MetadataReader)

Énumérez les types qui définissent une ou plusieurs propriétés.

ResolveSignatureTypeKind(MetadataReader, EntityHandle, Byte)

Étant donné un handle de type et un type brut trouvés dans un objet blob de signature détermine si le type cible est un type valeur ou un type référence.

S’applique à