Freigeben über


MetadataReader Klasse

Definition

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

public ref class MetadataReader sealed
public sealed class MetadataReader
type MetadataReader = class
Public NotInheritable Class MetadataReader
Vererbung
MetadataReader

Beispiele

In diesem Beispiel wird gezeigt, wie Sie eine Assembly erstellen MetadataReader und alle Typdefinitionen daraus lesen:

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

Hinweise

Vorsicht

Dieser Typ ist nicht für die Verarbeitung nicht vertrauenswürdiger Eingaben konzipiert. Fehlerhafte oder böswillige Metadaten können zu unerwartetem Verhalten führen, einschließlich nicht gebundener Speicherzugriff, Abstürze oder Blockaden. Wird nur mit vertrauenswürdigen Metadaten verwendet, z. B MetadataReader . Metadaten aus vertrauenswürdigen Assemblys.

MetadataReader liest den Inhalt von Tabellen und Heaps aus den angegebenen CLI-Metadaten. Es betreibt Konstrukte auf niedriger Ebene, z. B. Typ- und Methodendefinitionen. Eine API auf höherer Ebene zum Überprüfen der Inhalte von Assemblys mithilfe von Spiegelungskonstrukten finden Sie unter MetadataLoadContext.

Sie können Konstruktoren wie z MetadataReader(Byte*, Int32). B. zum Erstellen einer Instanz für MetadataReader einen bestimmten Speicherort verwenden. Um Metadaten aus der portablen ausführbaren Assemblydatei zu lesen, erstellen PEReader Und verwenden Sie die GetMetadataReader(PEReader) Erweiterungsmethode.

Das Format der CLI-Metadaten wird durch die ECMA-335-Spezifikation definiert. Weitere Informationen finden Sie auf der Ecma International-Website unter Standard ECMA-335 - Common Language Infrastructure (CLI ).

Konstruktoren

Name Beschreibung
MetadataReader(Byte*, Int32, MetadataReaderOptions, MetadataStringDecoder)

Initialisiert eine neue Instanz der MetadataReader Klasse aus den Metadaten, die am angegebenen Speicherort gespeichert sind.

MetadataReader(Byte*, Int32, MetadataReaderOptions)

Initialisiert eine neue Instanz der MetadataReader Klasse aus den Metadaten, die am angegebenen Speicherort gespeichert sind.

MetadataReader(Byte*, Int32)

Initialisiert eine neue Instanz der MetadataReader Klasse aus den Metadaten, die am angegebenen Speicherort gespeichert sind.

Eigenschaften

Name Beschreibung
AssemblyFiles

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

AssemblyReferences

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

CustomAttributes

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

CustomDebugInformation

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

DebugMetadataHeader

Ruft die aus #Pdb Datenstrom decodierten Informationen ab, oder null wenn der Datenstrom nicht vorhanden ist.

DeclarativeSecurityAttributes

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

Documents

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

EventDefinitions

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

ExportedTypes

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

FieldDefinitions

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

ImportScopes

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

IsAssembly

Ruft einen Wert ab, der angibt, ob die Metadaten eine Assembly darstellen.

LocalConstants

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

LocalScopes

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

LocalVariables

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

ManifestResources

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

MemberReferences

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

MetadataKind

Ruft die Metadatenart ab.

MetadataLength

Ruft die Länge der zugrunde liegenden Daten ab.

MetadataPointer

Ruft den Zeiger auf die zugrunde liegenden Daten ab.

MetadataVersion

Ruft die Versionszeichenfolge ab, die aus dem Metadatenheader gelesen wird.

MethodDebugInformation

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

MethodDefinitions

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

Options

Ruft den MetadataReaderOptions an den Konstruktor übergebenen ab.

PropertyDefinitions

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

StringComparer

Ruft den Comparer ab, der zum Vergleichen von in Metadaten gespeicherten Zeichenfolgen verwendet wird.

TypeDefinitions

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

TypeReferences

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

UTF8Decoder

Ruft den Decoder ab, der vom Leser verwendet wird, um Zeichenfolgeninstanzen aus UTF8-codierten Bytesequenzen zu erzeugen.

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetAssemblyDefinition()

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetAssemblyFile(AssemblyFileHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetAssemblyName(String)

Ruft die AssemblyName für eine bestimmte Datei ab.

GetAssemblyReference(AssemblyReferenceHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetBlobBytes(BlobHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetBlobContent(BlobHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetBlobReader(BlobHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetBlobReader(StringHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetConstant(ConstantHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetCustomAttribute(CustomAttributeHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetCustomAttributes(EntityHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetCustomDebugInformation(CustomDebugInformationHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetCustomDebugInformation(EntityHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetDocument(DocumentHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetEventDefinition(EventDefinitionHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetExportedType(ExportedTypeHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetFieldDefinition(FieldDefinitionHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetGenericParameter(GenericParameterHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetGenericParameterConstraint(GenericParameterConstraintHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetGuid(GuidHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetImportScope(ImportScopeHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetInterfaceImplementation(InterfaceImplementationHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetLocalConstant(LocalConstantHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetLocalScope(LocalScopeHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetLocalScopes(MethodDebugInformationHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetLocalScopes(MethodDefinitionHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetLocalVariable(LocalVariableHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetManifestResource(ManifestResourceHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetMemberReference(MemberReferenceHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetMethodDebugInformation(MethodDebugInformationHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetMethodDebugInformation(MethodDefinitionHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetMethodDefinition(MethodDefinitionHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetMethodImplementation(MethodImplementationHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetMethodSpecification(MethodSpecificationHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetModuleDefinition()

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetModuleReference(ModuleReferenceHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetNamespaceDefinition(NamespaceDefinitionHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetNamespaceDefinitionRoot()

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetParameter(ParameterHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetPropertyDefinition(PropertyDefinitionHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetStandaloneSignature(StandaloneSignatureHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetString(DocumentNameBlobHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetString(NamespaceDefinitionHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetString(StringHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
GetTypeDefinition(TypeDefinitionHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetTypeReference(TypeReferenceHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetTypeSpecification(TypeSpecificationHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

GetUserString(UserStringHandle)

Liest Metadaten gemäß der ECMA 335 CLI-Spezifikation.

MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Erweiterungsmethoden

Name Beschreibung
GetEditAndContinueLogEntries(MetadataReader)

Listet Einträge des EnC-Protokolls auf.

GetEditAndContinueMapEntries(MetadataReader)

Listet Einträge der EnC-Zuordnung auf.

GetHeapMetadataOffset(MetadataReader, HeapIndex)

Gibt den Offset vom Anfang der Metadaten bis zum angegebenen Heap zurück.

GetHeapOffset(MetadataReader, Handle)

Ruft den Offset von Metadaten-Heap-Daten ab, die dem angegebenen handle im Kontext von reader.

GetHeapSize(MetadataReader, HeapIndex)

Gibt die Größe des angegebenen Heaps zurück.

GetNextHandle(MetadataReader, BlobHandle)

Gibt den Ziehpunkt zurück, der auf den Blob angegebenen Blob im Heap oder einem Nil-Handle folgt, wenn es sich um den letzten handelt.

GetNextHandle(MetadataReader, StringHandle)

Gibt das Handle an die Zeichenfolge zurück, die dem angegebenen Im Zeichenfolgenhap folgt, oder ein Nil-Handle, wenn es sich um die letzte handelt.

GetNextHandle(MetadataReader, UserStringHandle)

Gibt das Handle an die UserString zurück, die dem angegebenen Im UserString-Heap oder einem Nil-Handle folgt, wenn es sich um den letzten handelt.

GetRowNumber(MetadataReader, EntityHandle)

Ruft die Zeilennummer eines Metadatentabelleneintrags ab, der dem angegebenen handle im Kontext von reader.

GetTableMetadataOffset(MetadataReader, TableIndex)

Gibt den Offset vom Anfang der Metadaten zur angegebenen Tabelle zurück.

GetTableRowCount(MetadataReader, TableIndex)

Gibt die Anzahl der Zeilen in der angegebenen Tabelle zurück.

GetTableRowSize(MetadataReader, TableIndex)

Gibt die Größe einer Zeile in der angegebenen Tabelle zurück.

GetToken(MetadataReader, EntityHandle)

Ruft das Metadatentoken des angegebenen handle im Kontext von reader.

GetToken(MetadataReader, Handle)

Ruft das Metadatentoken des angegebenen handle im Kontext von reader.

GetTypesWithEvents(MetadataReader)

Aufzählen von Typen, die ein oder mehrere Ereignisse definieren.

GetTypesWithProperties(MetadataReader)

Aufzählen von Typen, die eine oder mehrere Eigenschaften definieren.

ResolveSignatureTypeKind(MetadataReader, EntityHandle, Byte)

Bei einem Typhandle und einer unformatierten Typart, die in einem Signaturblob gefunden wird, wird bestimmt, ob der Zieltyp ein Werttyp oder ein Verweistyp ist.

Gilt für: