MetadataReader Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Č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 |
| 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 |
| 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é |
| 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 |
| GetToken(MetadataReader, Handle) |
Získá token metadat zadaného |
| 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. |