MetadataReader Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335.
public ref class MetadataReader sealed
public sealed class MetadataReader
type MetadataReader = class
Public NotInheritable Class MetadataReader
- Warisan
-
MetadataReader
Contoh
Contoh ini menunjukkan cara membuat MetadataReader untuk rakitan dan membaca semua definisi jenis darinya:
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}");
}
Keterangan
Perhatian
Jenis ini tidak dirancang untuk menangani input yang tidak tepercaya. Metadata yang salah bentuk atau berbahaya dapat menyebabkan perilaku tak terduga, termasuk akses memori di luar batas, crash, atau macet. Hanya gunakan MetadataReader dengan metadata tepercaya, seperti metadata dari rakitan tepercaya.
MetadataReader membaca isi tabel dan timbunan dari metadata CLI yang ditentukan. Ini mengoperasikan konstruksi tingkat rendah seperti definisi jenis dan metode. Untuk API tingkat yang lebih tinggi untuk memeriksa konten rakitan menggunakan konstruksi refleksi, lihat MetadataLoadContext.
Anda dapat menggunakan konstruktor, seperti MetadataReader(Byte*, Int32), untuk membuat instans MetadataReader untuk lokasi memori tertentu. Untuk membaca metadata dari file rakitan Portable Executable, buat PEReader dan gunakan GetMetadataReader(PEReader) metode ekstensi.
Format metadata CLI ditentukan oleh spesifikasi ECMA-335. Untuk informasi selengkapnya, lihat ECMA-335 Standar - Infrastruktur Bahasa Umum (CLI) di situs Web Internasional Ecma.
Konstruktor
| Nama | Deskripsi |
|---|---|
| MetadataReader(Byte*, Int32, MetadataReaderOptions, MetadataStringDecoder) |
Menginisialisasi instans MetadataReader baru kelas dari metadata yang disimpan di lokasi memori yang diberikan. |
| MetadataReader(Byte*, Int32, MetadataReaderOptions) |
Menginisialisasi instans MetadataReader baru kelas dari metadata yang disimpan di lokasi memori yang diberikan. |
| MetadataReader(Byte*, Int32) |
Menginisialisasi instans MetadataReader baru kelas dari metadata yang disimpan di lokasi memori yang diberikan. |
Properti
| Nama | Deskripsi |
|---|---|
| AssemblyFiles |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| AssemblyReferences |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| CustomAttributes |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| CustomDebugInformation |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| DebugMetadataHeader |
Mendapatkan informasi yang didekodekan dari aliran #Pdb, atau |
| DeclarativeSecurityAttributes |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| Documents |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| EventDefinitions |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| ExportedTypes |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| FieldDefinitions |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| ImportScopes |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| IsAssembly |
Mendapatkan nilai yang menunjukkan apakah metadata mewakili rakitan. |
| LocalConstants |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| LocalScopes |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| LocalVariables |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| ManifestResources |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| MemberReferences |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| MetadataKind |
Mendapatkan jenis metadata. |
| MetadataLength |
Mendapatkan panjang data yang mendasar. |
| MetadataPointer |
Mendapatkan penunjuk ke data yang mendasar. |
| MetadataVersion |
Mendapatkan string versi yang dibaca dari header metadata. |
| MethodDebugInformation |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| MethodDefinitions |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| Options |
Mendapatkan diteruskan MetadataReaderOptions ke konstruktor. |
| PropertyDefinitions |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| StringComparer |
Mendapatkan pembanding yang digunakan untuk membandingkan string yang disimpan dalam metadata. |
| TypeDefinitions |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| TypeReferences |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| UTF8Decoder |
Mendapatkan dekoder yang digunakan oleh pembaca untuk menghasilkan instans string dari urutan byte yang dikodekan UTF8. |
Metode
| Nama | Deskripsi |
|---|---|
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetAssemblyDefinition() |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetAssemblyFile(AssemblyFileHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetAssemblyName(String) |
AssemblyName Mendapatkan untuk file tertentu. |
| GetAssemblyReference(AssemblyReferenceHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetBlobBytes(BlobHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetBlobContent(BlobHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetBlobReader(BlobHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetBlobReader(StringHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetConstant(ConstantHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetCustomAttribute(CustomAttributeHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetCustomAttributes(EntityHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetCustomDebugInformation(CustomDebugInformationHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetCustomDebugInformation(EntityHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetDeclarativeSecurityAttribute(DeclarativeSecurityAttributeHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetDocument(DocumentHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetEventDefinition(EventDefinitionHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetExportedType(ExportedTypeHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetFieldDefinition(FieldDefinitionHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetGenericParameter(GenericParameterHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetGenericParameterConstraint(GenericParameterConstraintHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetGuid(GuidHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetImportScope(ImportScopeHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetInterfaceImplementation(InterfaceImplementationHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetLocalConstant(LocalConstantHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetLocalScope(LocalScopeHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetLocalScopes(MethodDebugInformationHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetLocalScopes(MethodDefinitionHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetLocalVariable(LocalVariableHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetManifestResource(ManifestResourceHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetMemberReference(MemberReferenceHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetMethodDebugInformation(MethodDebugInformationHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetMethodDebugInformation(MethodDefinitionHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetMethodDefinition(MethodDefinitionHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetMethodImplementation(MethodImplementationHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetMethodSpecification(MethodSpecificationHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetModuleDefinition() |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetModuleReference(ModuleReferenceHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetNamespaceDefinition(NamespaceDefinitionHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetNamespaceDefinitionRoot() |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetParameter(ParameterHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetPropertyDefinition(PropertyDefinitionHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetStandaloneSignature(StandaloneSignatureHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetString(DocumentNameBlobHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetString(NamespaceDefinitionHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetString(StringHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| GetTypeDefinition(TypeDefinitionHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetTypeReference(TypeReferenceHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetTypeSpecification(TypeSpecificationHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| GetUserString(UserStringHandle) |
Membaca metadata seperti yang didefinisikan oleh spesifikasi CLI ECMA 335. |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| GetEditAndContinueLogEntries(MetadataReader) |
Menghitung entri log EnC. |
| GetEditAndContinueMapEntries(MetadataReader) |
Menghitung entri peta EnC. |
| GetHeapMetadataOffset(MetadataReader, HeapIndex) |
Mengembalikan offset dari awal metadata ke tumpukan yang ditentukan. |
| GetHeapOffset(MetadataReader, Handle) |
Mendapatkan offset data timbunan metadata yang sesuai dengan yang ditentukan |
| GetHeapSize(MetadataReader, HeapIndex) |
Mengembalikan ukuran timbunan yang ditentukan. |
| GetNextHandle(MetadataReader, BlobHandle) |
Mengembalikan handel ke Blob yang mengikuti yang diberikan dalam Blob heap atau handel nihil jika itu adalah yang terakhir. |
| GetNextHandle(MetadataReader, StringHandle) |
Mengembalikan handel ke string yang mengikuti yang diberikan dalam tumpuk string, atau handel nihil jika merupakan yang terakhir. |
| GetNextHandle(MetadataReader, UserStringHandle) |
Mengembalikan handel ke UserString yang mengikuti yang diberikan dalam tumpuk UserString atau handel nihil jika merupakan yang terakhir. |
| GetRowNumber(MetadataReader, EntityHandle) |
Mendapatkan nomor baris entri tabel metadata yang sesuai dengan yang ditentukan |
| GetTableMetadataOffset(MetadataReader, TableIndex) |
Mengembalikan offset dari awal metadata ke tabel yang ditentukan. |
| GetTableRowCount(MetadataReader, TableIndex) |
Mengembalikan jumlah baris dalam tabel yang ditentukan. |
| GetTableRowSize(MetadataReader, TableIndex) |
Mengembalikan ukuran baris dalam tabel yang ditentukan. |
| GetToken(MetadataReader, EntityHandle) |
Mendapatkan token metadata dari yang ditentukan |
| GetToken(MetadataReader, Handle) |
Mendapatkan token metadata dari yang ditentukan |
| GetTypesWithEvents(MetadataReader) |
Menghitung jenis yang menentukan satu atau beberapa peristiwa. |
| GetTypesWithProperties(MetadataReader) |
Menghitung jenis yang menentukan satu atau beberapa properti. |
| ResolveSignatureTypeKind(MetadataReader, EntityHandle, Byte) |
Mengingat jenis handel dan jenis jenis mentah yang ditemukan dalam blob tanda tangan menentukan apakah jenis target adalah jenis nilai atau jenis referensi. |