Sdílet prostřednictvím


MetadataReader Třída

Definice

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

public ref class MetadataReader sealed
public sealed class MetadataReader
type MetadataReader = class
Public NotInheritable Class MetadataReader
Dědičnost
MetadataReader

Příklady

Tento příklad ukazuje, jak vytvořit MetadataReader sestavení a přečíst z něj všechny definice typu:

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

Poznámky

Upozornění

Tento typ není navržený tak, aby zpracovával nedůvěryhodný vstup. Poškozená nebo škodlivá metadata můžou způsobit neočekávané chování, včetně přístupu k paměti mimo hranice, chybových ukončení nebo zablokování. Používejte MetadataReader pouze s důvěryhodnými metadaty, jako jsou metadata z důvěryhodných sestavení.

MetadataReader čte obsah tabulek a hald ze zadaných metadat rozhraní příkazového řádku. Pracuje s konstrukcemi nízké úrovně, jako jsou definice typu a metody. Rozhraní API vyšší úrovně ke kontrole obsahu sestavení pomocí konstruktorů reflexe naleznete v tématu MetadataLoadContext.

Konstruktory, například MetadataReader(Byte*, Int32), můžete použít k vytvoření instance MetadataReader pro dané umístění paměti. Pokud chcete číst metadata ze souboru sestavení Portable Spustitelný soubor, vytvořte PEReader a použijte metodu GetMetadataReader(PEReader) rozšíření.

Formát metadat rozhraní příkazového řádku je definován specifikací ECMA-335. Další informace naleznete v tématu Standard ECMA-335 - Common Language Infrastructure (CLI) na webu Ecma International.

Konstruktory

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

Inicializuje novou instanci MetadataReader třídy z metadat uložených v daném umístění paměti.

MetadataReader(Byte*, Int32, MetadataReaderOptions)

Inicializuje novou instanci MetadataReader třídy z metadat uložených v daném umístění paměti.

MetadataReader(Byte*, Int32)

Inicializuje novou instanci MetadataReader třídy z metadat uložených v daném umístění paměti.

Vlastnosti

Name Description
AssemblyFiles

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

AssemblyReferences

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

CustomAttributes

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

CustomDebugInformation

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

DebugMetadataHeader

Získá informace dekódované z #Pdb datového proudu, nebo null pokud stream není k dispozici.

DeclarativeSecurityAttributes

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

Documents

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

EventDefinitions

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

ExportedTypes

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

FieldDefinitions

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

ImportScopes

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

IsAssembly

Získá hodnotu, která označuje, zda metadata představuje sestavení.

LocalConstants

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

LocalScopes

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

LocalVariables

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

ManifestResources

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

MemberReferences

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

MetadataKind

Získá druh metadat.

MetadataLength

Získá délku podkladových dat.

MetadataPointer

Získá ukazatel na podkladová data.

MetadataVersion

Získá řetězec verze načtený z hlavičky metadat.

MethodDebugInformation

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

MethodDefinitions

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

Options

MetadataReaderOptions Získá předán do konstruktoru.

PropertyDefinitions

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

StringComparer

Získá porovnávač použitý k porovnání řetězců uložených v metadatech.

TypeDefinitions

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

TypeReferences

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

UTF8Decoder

Získá dekodér, který čtenář používá k vytvoření řetězcových instancí z sekvence bajtů kódování UTF8.

Metody

Name Description
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetAssemblyDefinition()

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetAssemblyFile(AssemblyFileHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetAssemblyName(String)

AssemblyName Získá pro daný soubor.

GetAssemblyReference(AssemblyReferenceHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetBlobBytes(BlobHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetBlobContent(BlobHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetBlobReader(BlobHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetBlobReader(StringHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetConstant(ConstantHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetCustomAttribute(CustomAttributeHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetCustomAttributes(EntityHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetCustomDebugInformation(CustomDebugInformationHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetCustomDebugInformation(EntityHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetDocument(DocumentHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetEventDefinition(EventDefinitionHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetExportedType(ExportedTypeHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetFieldDefinition(FieldDefinitionHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetGenericParameter(GenericParameterHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetGenericParameterConstraint(GenericParameterConstraintHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetGuid(GuidHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetImportScope(ImportScopeHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetInterfaceImplementation(InterfaceImplementationHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetLocalConstant(LocalConstantHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetLocalScope(LocalScopeHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetLocalScopes(MethodDebugInformationHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetLocalScopes(MethodDefinitionHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetLocalVariable(LocalVariableHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetManifestResource(ManifestResourceHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetMemberReference(MemberReferenceHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetMethodDebugInformation(MethodDebugInformationHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetMethodDebugInformation(MethodDefinitionHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetMethodDefinition(MethodDefinitionHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetMethodImplementation(MethodImplementationHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetMethodSpecification(MethodSpecificationHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetModuleDefinition()

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetModuleReference(ModuleReferenceHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetNamespaceDefinition(NamespaceDefinitionHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetNamespaceDefinitionRoot()

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetParameter(ParameterHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetPropertyDefinition(PropertyDefinitionHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetStandaloneSignature(StandaloneSignatureHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetString(DocumentNameBlobHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetString(NamespaceDefinitionHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetString(StringHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
GetTypeDefinition(TypeDefinitionHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetTypeReference(TypeReferenceHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetTypeSpecification(TypeSpecificationHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

GetUserString(UserStringHandle)

Čte metadata definovaná specifikací rozhraní příkazového řádku ECMA 335.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Metody rozšíření

Name Description
GetEditAndContinueLogEntries(MetadataReader)

Vytvoří výčet položek protokolu EnC.

GetEditAndContinueMapEntries(MetadataReader)

Vytvoří výčet položek mapy EnC.

GetHeapMetadataOffset(MetadataReader, HeapIndex)

Vrátí posun od začátku metadat na zadanou haldu.

GetHeapOffset(MetadataReader, Handle)

Získá posun dat haldy metadat, která odpovídají zadanému handle v kontextu reader.

GetHeapSize(MetadataReader, HeapIndex)

Vrátí velikost zadané haldy.

GetNextHandle(MetadataReader, BlobHandle)

Vrátí popisovač na Blob ten, který následuje za danou v haldě Blob nebo nil popisovač, pokud je to poslední.

GetNextHandle(MetadataReader, StringHandle)

Vrátí popisovač k řetězci, který následuje za daným řetězcem v haldě řetězce, nebo nil popisovač, pokud se jedná o poslední popisovač.

GetNextHandle(MetadataReader, UserStringHandle)

Vrátí popisovač userString, který následuje za daným v haldě UserString nebo nil popisovač, pokud je to poslední.

GetRowNumber(MetadataReader, EntityHandle)

Získá číslo řádku položky tabulky metadat, která odpovídá zadané handle v kontextu reader.

GetTableMetadataOffset(MetadataReader, TableIndex)

Vrátí posun od začátku metadat do zadané tabulky.

GetTableRowCount(MetadataReader, TableIndex)

Vrátí počet řádků v zadané tabulce.

GetTableRowSize(MetadataReader, TableIndex)

Vrátí velikost řádku v zadané tabulce.

GetToken(MetadataReader, EntityHandle)

Získá token metadat zadaného handle v kontextu reader.

GetToken(MetadataReader, Handle)

Získá token metadat zadaného handle v kontextu reader.

GetTypesWithEvents(MetadataReader)

Zobrazení výčtu typů, které definují jednu nebo více událostí

GetTypesWithProperties(MetadataReader)

Vytvoří výčet typů, které definují jednu nebo více vlastností.

ResolveSignatureTypeKind(MetadataReader, EntityHandle, Byte)

Vzhledem k popisovači typu a typu nezpracovaného typu nalezeného v objektu blob podpisu určuje, zda je cílovým typem typ hodnoty nebo typ odkazu.

Platí pro