MetadataReader Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 |
| 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 |
| 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 |
| 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 |
| GetToken(MetadataReader, Handle) |
Ruft das Metadatentoken des angegebenen |
| 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. |