MethodBodyBlock 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.
Mewakili isi metode dalam rakitan ECMA 335.
public ref class MethodBodyBlock sealed
public sealed class MethodBodyBlock
type MethodBodyBlock = class
Public NotInheritable Class MethodBodyBlock
- Warisan
-
MethodBodyBlock
Contoh
Contoh ini menunjukkan cara membaca badan metode untuk semua metode dalam definisi jenis yang ditentukan dan menampilkan informasi isi metode:
static void PrintMethods(PEReader reader, MetadataReader mr, TypeDefinition tdef)
{
MethodDefinitionHandleCollection methods = tdef.GetMethods();
foreach (MethodDefinitionHandle mdefh in methods)
{
MethodDefinition mdef = mr.GetMethodDefinition(mdefh);
string mname = mr.GetString(mdef.Name);
Console.WriteLine($"Method: {mname}");
// Get the relative address of the method body in the executable
int rva = mdef.RelativeVirtualAddress;
if (rva == 0)
{
Console.WriteLine("Method body not found");
Console.WriteLine();
continue;
}
// Get method body information
MethodBodyBlock mb = reader.GetMethodBody(rva);
Console.WriteLine($" Maximum stack size: {mb.MaxStack}");
Console.WriteLine($" Local variables initialized: {mb.LocalVariablesInitialized}");
byte[]? il = mb.GetILBytes();
Console.WriteLine($" Method body size: {il?.Length ?? 0}");
Console.WriteLine($" Exception regions: {mb.ExceptionRegions.Length}");
Console.WriteLine();
foreach (var region in mb.ExceptionRegions)
{
Console.WriteLine(region.Kind.ToString());
Console.WriteLine($" Try block offset: {region.TryOffset}");
Console.WriteLine($" Try block length: {region.TryLength}");
Console.WriteLine($" Handler offset: {region.HandlerOffset}");
Console.WriteLine($" Handler length: {region.HandlerLength}");
Console.WriteLine();
}
}
}
Keterangan
Isi metode berisi instruksi Common Intermediate Language (CIL) yang membentuk metode dan informasi tentang variabel lokal dan wilayah pengecualiannya. Anda dapat menggunakan GetMethodBody metode untuk mendapatkan MethodBodyBlock
instans untuk metode yang ditentukan.
Format instruksi dan metadata CIL ditentukan oleh spesifikasi ECMA-335. Untuk informasi selengkapnya, lihat ECMA-335 Standar - Infrastruktur Bahasa Umum (CLI) di situs Web Ecma International.
Properti
ExceptionRegions |
Mendapatkan array wilayah pengecualian dalam isi metode ini. |
LocalSignature |
Mendapatkan handel ke tanda tangan variabel lokal. |
LocalVariablesInitialized |
Mendapatkan nilai yang menunjukkan apakah variabel lokal dalam metode ini diinisialisasi ke nilai default jenisnya. |
MaxStack |
Mendapatkan jumlah maksimum item pada tumpukan evaluasi untuk metode ini. |
Size |
Mendapatkan ukuran isi metode, termasuk header, IL, dan wilayah pengecualian. |
Metode
Create(BlobReader) |
Membuat instans MethodBodyBlock baru kelas menggunakan pembaca blob yang ditentukan. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetILBytes() |
Mendapatkan bytecode IL dari isi metode ini sebagai array byte. |
GetILContent() |
Mendapatkan bytecode IL dari isi metode ini sebagai array yang tidak dapat diubah. |
GetILReader() |
Mendapatkan pembaca blob yang membaca bytecode IL dari isi metode ini. |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |