Share via


MethodBodyStreamEncoder.AddMethodBody 方法

定义

重载

AddMethodBody(InstructionEncoder, Int32, StandaloneSignatureHandle, MethodBodyAttributes)

对方法主体进行编码,并将其添加到方法主体流中。

AddMethodBody(InstructionEncoder, Int32, StandaloneSignatureHandle, MethodBodyAttributes, Boolean)

通过使用提供的指令编码器、最大堆栈大小、局部变量的签名句柄、方法主体属性并允许指示该方法是否应从动态本地内存池分配,对方法主体进行编码,并将其添加到方法主体流。

AddMethodBody(Int32, Int32, Int32, Boolean, StandaloneSignatureHandle, MethodBodyAttributes)

通过使用提供的代码大小、最大堆栈大小、异常区域的数目、局部变量的签名句柄、方法主体属性并允许指示是否应以小格式编码异常区域,对方法主体进行编码,并将其添加到方法主体流。

AddMethodBody(Int32, Int32, Int32, Boolean, StandaloneSignatureHandle, MethodBodyAttributes, Boolean)

通过使用提供的代码大小、最大堆栈大小、异常区域的数目、局部变量的签名句柄、方法主体属性,允许指示是否应以小格式编码异常区域,并允许指示方法是否应从动态本地内存池分配,对方法主体进行编码,并将其添加到方法主体流。

AddMethodBody(InstructionEncoder, Int32, StandaloneSignatureHandle, MethodBodyAttributes)

Source:
MethodBodyStreamEncoder.cs
Source:
MethodBodyStreamEncoder.cs
Source:
MethodBodyStreamEncoder.cs

对方法主体进行编码,并将其添加到方法主体流中。

public:
 int AddMethodBody(System::Reflection::Metadata::Ecma335::InstructionEncoder instructionEncoder, int maxStack, System::Reflection::Metadata::StandaloneSignatureHandle localVariablesSignature, System::Reflection::Metadata::Ecma335::MethodBodyAttributes attributes);
public int AddMethodBody (System.Reflection.Metadata.Ecma335.InstructionEncoder instructionEncoder, int maxStack, System.Reflection.Metadata.StandaloneSignatureHandle localVariablesSignature, System.Reflection.Metadata.Ecma335.MethodBodyAttributes attributes);
public int AddMethodBody (System.Reflection.Metadata.Ecma335.InstructionEncoder instructionEncoder, int maxStack = 8, System.Reflection.Metadata.StandaloneSignatureHandle localVariablesSignature = default, System.Reflection.Metadata.Ecma335.MethodBodyAttributes attributes = System.Reflection.Metadata.Ecma335.MethodBodyAttributes.InitLocals);
member this.AddMethodBody : System.Reflection.Metadata.Ecma335.InstructionEncoder * int * System.Reflection.Metadata.StandaloneSignatureHandle * System.Reflection.Metadata.Ecma335.MethodBodyAttributes -> int
Public Function AddMethodBody (instructionEncoder As InstructionEncoder, maxStack As Integer, localVariablesSignature As StandaloneSignatureHandle, attributes As MethodBodyAttributes) As Integer
Public Function AddMethodBody (instructionEncoder As InstructionEncoder, Optional maxStack As Integer = 8, Optional localVariablesSignature As StandaloneSignatureHandle = Nothing, Optional attributes As MethodBodyAttributes = System.Reflection.Metadata.Ecma335.MethodBodyAttributes.InitLocals) As Integer

参数

instructionEncoder
InstructionEncoder

指令编码器。

maxStack
Int32

最大堆栈大小。

localVariablesSignature
StandaloneSignatureHandle

局部变量的签名句柄。

attributes
MethodBodyAttributes

方法主体属性。

返回

已编码主体在方法主体流中的偏移量。

例外

instructionEncoder 具有默认值。

maxStack 已超过 [0, UInt16.MaxValue] 范围。

指令流中分支的目标标签尚未标记,或者分支指令与目标标签之间的距离不符合指令操作数的大小。

适用于

AddMethodBody(InstructionEncoder, Int32, StandaloneSignatureHandle, MethodBodyAttributes, Boolean)

Source:
MethodBodyStreamEncoder.cs
Source:
MethodBodyStreamEncoder.cs
Source:
MethodBodyStreamEncoder.cs

通过使用提供的指令编码器、最大堆栈大小、局部变量的签名句柄、方法主体属性并允许指示该方法是否应从动态本地内存池分配,对方法主体进行编码,并将其添加到方法主体流。

public int AddMethodBody (System.Reflection.Metadata.Ecma335.InstructionEncoder instructionEncoder, int maxStack = 8, System.Reflection.Metadata.StandaloneSignatureHandle localVariablesSignature = default, System.Reflection.Metadata.Ecma335.MethodBodyAttributes attributes = System.Reflection.Metadata.Ecma335.MethodBodyAttributes.InitLocals, bool hasDynamicStackAllocation = false);
member this.AddMethodBody : System.Reflection.Metadata.Ecma335.InstructionEncoder * int * System.Reflection.Metadata.StandaloneSignatureHandle * System.Reflection.Metadata.Ecma335.MethodBodyAttributes * bool -> int
Public Function AddMethodBody (instructionEncoder As InstructionEncoder, Optional maxStack As Integer = 8, Optional localVariablesSignature As StandaloneSignatureHandle = Nothing, Optional attributes As MethodBodyAttributes = System.Reflection.Metadata.Ecma335.MethodBodyAttributes.InitLocals, Optional hasDynamicStackAllocation As Boolean = false) As Integer

参数

instructionEncoder
InstructionEncoder

指令编码器。

maxStack
Int32

最大堆栈大小。

localVariablesSignature
StandaloneSignatureHandle

局部变量的签名句柄。

attributes
MethodBodyAttributes

方法主体属性。

hasDynamicStackAllocation
Boolean

如果方法从动态本地内存池分配(IL 包含 localloc 指令),则为 true;否则为 false

返回

已编码主体在方法主体流中的偏移量。

例外

instructionEncoder 具有默认值。

maxStack 已超过 [0, UInt16.MaxValue] 范围。

指令流中分支的目标标签尚未标记,或者分支指令与目标标签之间的距离不符合指令操作数的大小。

适用于

AddMethodBody(Int32, Int32, Int32, Boolean, StandaloneSignatureHandle, MethodBodyAttributes)

Source:
MethodBodyStreamEncoder.cs
Source:
MethodBodyStreamEncoder.cs
Source:
MethodBodyStreamEncoder.cs

通过使用提供的代码大小、最大堆栈大小、异常区域的数目、局部变量的签名句柄、方法主体属性并允许指示是否应以小格式编码异常区域,对方法主体进行编码,并将其添加到方法主体流。

public:
 System::Reflection::Metadata::Ecma335::MethodBodyStreamEncoder::MethodBody AddMethodBody(int codeSize, int maxStack, int exceptionRegionCount, bool hasSmallExceptionRegions, System::Reflection::Metadata::StandaloneSignatureHandle localVariablesSignature, System::Reflection::Metadata::Ecma335::MethodBodyAttributes attributes);
public System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.MethodBody AddMethodBody (int codeSize, int maxStack, int exceptionRegionCount, bool hasSmallExceptionRegions, System.Reflection.Metadata.StandaloneSignatureHandle localVariablesSignature, System.Reflection.Metadata.Ecma335.MethodBodyAttributes attributes);
public System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.MethodBody AddMethodBody (int codeSize, int maxStack = 8, int exceptionRegionCount = 0, bool hasSmallExceptionRegions = true, System.Reflection.Metadata.StandaloneSignatureHandle localVariablesSignature = default, System.Reflection.Metadata.Ecma335.MethodBodyAttributes attributes = System.Reflection.Metadata.Ecma335.MethodBodyAttributes.InitLocals);
member this.AddMethodBody : int * int * int * bool * System.Reflection.Metadata.StandaloneSignatureHandle * System.Reflection.Metadata.Ecma335.MethodBodyAttributes -> System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.MethodBody
Public Function AddMethodBody (codeSize As Integer, maxStack As Integer, exceptionRegionCount As Integer, hasSmallExceptionRegions As Boolean, localVariablesSignature As StandaloneSignatureHandle, attributes As MethodBodyAttributes) As MethodBodyStreamEncoder.MethodBody
Public Function AddMethodBody (codeSize As Integer, Optional maxStack As Integer = 8, Optional exceptionRegionCount As Integer = 0, Optional hasSmallExceptionRegions As Boolean = true, Optional localVariablesSignature As StandaloneSignatureHandle = Nothing, Optional attributes As MethodBodyAttributes = System.Reflection.Metadata.Ecma335.MethodBodyAttributes.InitLocals) As MethodBodyStreamEncoder.MethodBody

参数

codeSize
Int32

要为指令保留的字节数。

maxStack
Int32

最大堆栈大小。

exceptionRegionCount
Int32

异常区域的数目。

hasSmallExceptionRegions
Boolean

如果应以小格式编码异常区域,则为 true;否则为 false

localVariablesSignature
StandaloneSignatureHandle

局部变量的签名句柄。

attributes
MethodBodyAttributes

方法主体属性。

返回

已编码主体在方法主体流中的偏移量。

例外

codeSizeexceptionRegionCountmaxStack 已超过允许的范围。

适用于

AddMethodBody(Int32, Int32, Int32, Boolean, StandaloneSignatureHandle, MethodBodyAttributes, Boolean)

Source:
MethodBodyStreamEncoder.cs
Source:
MethodBodyStreamEncoder.cs
Source:
MethodBodyStreamEncoder.cs

通过使用提供的代码大小、最大堆栈大小、异常区域的数目、局部变量的签名句柄、方法主体属性,允许指示是否应以小格式编码异常区域,并允许指示方法是否应从动态本地内存池分配,对方法主体进行编码,并将其添加到方法主体流。

public System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.MethodBody AddMethodBody (int codeSize, int maxStack = 8, int exceptionRegionCount = 0, bool hasSmallExceptionRegions = true, System.Reflection.Metadata.StandaloneSignatureHandle localVariablesSignature = default, System.Reflection.Metadata.Ecma335.MethodBodyAttributes attributes = System.Reflection.Metadata.Ecma335.MethodBodyAttributes.InitLocals, bool hasDynamicStackAllocation = false);
member this.AddMethodBody : int * int * int * bool * System.Reflection.Metadata.StandaloneSignatureHandle * System.Reflection.Metadata.Ecma335.MethodBodyAttributes * bool -> System.Reflection.Metadata.Ecma335.MethodBodyStreamEncoder.MethodBody
Public Function AddMethodBody (codeSize As Integer, Optional maxStack As Integer = 8, Optional exceptionRegionCount As Integer = 0, Optional hasSmallExceptionRegions As Boolean = true, Optional localVariablesSignature As StandaloneSignatureHandle = Nothing, Optional attributes As MethodBodyAttributes = System.Reflection.Metadata.Ecma335.MethodBodyAttributes.InitLocals, Optional hasDynamicStackAllocation As Boolean = false) As MethodBodyStreamEncoder.MethodBody

参数

codeSize
Int32

要为指令保留的字节数。

maxStack
Int32

最大堆栈大小。

exceptionRegionCount
Int32

异常区域的数目。

hasSmallExceptionRegions
Boolean

如果应以小格式编码异常区域,则为 true;否则为 false

localVariablesSignature
StandaloneSignatureHandle

局部变量的签名句柄。

attributes
MethodBodyAttributes

方法主体属性。

hasDynamicStackAllocation
Boolean

如果方法从动态本地内存池分配(localloc 指令),则为 true;否则为 false

返回

已编码主体在方法主体流中的偏移量。

例外

codeSizeexceptionRegionCountmaxStack 已超过允许的范围。

适用于