MethodBodyBlock Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Vertegenwoordigt de methodebody in ECMA 335 assembly.
public ref class MethodBodyBlock sealed
public sealed class MethodBodyBlock
type MethodBodyBlock = class
Public NotInheritable Class MethodBodyBlock
- Overname
-
MethodBodyBlock
Voorbeelden
In dit voorbeeld ziet u hoe u methodeteksten kunt lezen voor alle methoden in de opgegeven typedefinitie en informatie over de hoofdtekst van de methode:
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();
}
}
}
Opmerkingen
De hoofdtekst van de methode bevat CIL-instructies (Common Intermediate Language) waaruit een methode bestaat en informatie over de lokale variabelen en uitzonderingsregio's. U kunt de GetMethodBody methode gebruiken om een MethodBodyBlock exemplaar op te halen voor de opgegeven methode.
De indeling van CIL-instructies en -metagegevens wordt gedefinieerd door de ECMA-335-specificatie. Zie Standard ECMA-335 - Common Language Infrastructure (CLI) op de website van Ecma International voor meer informatie.
Eigenschappen
| Name | Description |
|---|---|
| ExceptionRegions |
Hiermee haalt u de matrix van uitzonderingsregio's op in deze hoofdtekst van de methode. |
| LocalSignature |
Hiermee haalt u de ingang op voor de handtekening voor lokale variabelen. |
| LocalVariablesInitialized |
Hiermee wordt een waarde opgehaald die aangeeft of lokale variabelen in deze methode worden geïnitialiseerd op standaardwaarden van hun typen. |
| MaxStack |
Hiermee haalt u het maximum aantal items op de evaluatiestack voor deze methode op. |
| Size |
Hiermee wordt de grootte van de hoofdtekst van de methode, inclusief de koptekst, IL en uitzonderingsregio's, ophaalt. |
Methoden
| Name | Description |
|---|---|
| Create(BlobReader) |
Hiermee maakt u een nieuw exemplaar van de MethodBodyBlock klasse met behulp van de opgegeven bloblezer. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetILBytes() |
Haalt de IL-bytecode van deze methodetekst op als een bytematrix. |
| GetILContent() |
Haalt de IL-bytecode van deze methodetekst op als onveranderbare matrix. |
| GetILReader() |
Hiermee haalt u een bloblezer op die de IL-bytecode van deze methodetekst leest. |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |