DynamicILInfo 类

定义

提供对多种用来为动态方法生成 Microsoft 中间语言 (MSIL) 和元数据的其他方式的支持,包括用来创建标记和插入代码的方法、异常处理,以及局部变量签名 Blob。

C#
public sealed class DynamicILInfo
C#
[System.Runtime.InteropServices.ComVisible(true)]
public class DynamicILInfo
C#
public class DynamicILInfo
继承
DynamicILInfo
属性

注解

DynamicILInfo 允许开发人员编写自己的 MSIL 生成器,而不是使用 ILGenerator

若要创建其他类型的实例、调用方法等,生成的 MSIL 必须包含这些实体的令牌。 类 DynamicILInfo 提供 方法的 GetTokenFor 多个重载,这些重载返回当前 DynamicILInfo范围内有效的令牌。 例如,如果需要调用 方法的 Console.WriteLine 重载,则可以获取 RuntimeMethodHandle 该重载的 ,并将其 GetTokenFor 传递给 方法以获取要嵌入 MSIL 中的令牌。

为本地变量签名、异常和代码正文创建Byte数组后,可以使用 SetCodeSetExceptionsSetLocalSignature 方法将它们插入到与对象关联的 DynamicILInfoDynamicMethod

生成自己的元数据和 MSIL 需要熟悉公共语言基础结构 (CLI) 文档,特别是“分区 II:元数据定义和语义”和“分区 III:CIL 指令集”。 有关详细信息,请参阅 ECMA 335 公共语言基础结构 (CLI)

备注

请勿使用 DynamicILInfo 生成通过直接调用委托构造函数来创建另一个动态方法的委托的代码。 请改用 CreateDelegate 方法创建委托。 使用委托构造函数创建的委托没有对目标动态方法的引用。 当委托仍在使用时,垃圾回收可能会回收动态方法。

属性

DynamicMethod

获取动态方法,该方法的方法体由当前实例生成。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetTokenFor(Byte[])

获取一个在当前 DynamicILInfo 的范围内有效的标记,它表示关联动态方法的签名。

GetTokenFor(DynamicMethod)

获取一个在当前 DynamicILInfo 的范围内有效的标记,它表示将从关联方法调用的动态方法。

GetTokenFor(RuntimeFieldHandle)

获取一个在当前 DynamicILInfo 的范围内有效的标记,它表示将从关联动态方法访问的字段。

GetTokenFor(RuntimeFieldHandle, RuntimeTypeHandle)

获取一个在当前 DynamicILInfo 的范围内有效的标记,它表示将从关联动态方法访问的字段;该字段在指定的泛型类型上。

GetTokenFor(RuntimeMethodHandle)

获取一个在当前 DynamicILInfo 的范围内有效的标记,它表示将从关联动态方法访问的方法。

GetTokenFor(RuntimeMethodHandle, RuntimeTypeHandle)

获取一个在当前 DynamicILInfo 的范围内有效的标记,它表示泛型类型上的一个方法。

GetTokenFor(RuntimeTypeHandle)

获取一个在当前 DynamicILInfo 的范围内有效的标记,它表示将在关联动态方法中使用的类型。

GetTokenFor(String)

获取一个在当前 DynamicILInfo 的范围内有效的标记,它表示将在关联动态方法中使用的字符串。

GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
SetCode(Byte*, Int32, Int32)

设置关联动态方法的代码体。

SetCode(Byte[], Int32)

设置关联动态方法的代码体。

SetExceptions(Byte*, Int32)

设置关联动态方法的异常元数据。

SetExceptions(Byte[])

设置关联动态方法的异常元数据。

SetLocalSignature(Byte*, Int32)

设置描述关联动态方法的局部变量布局的局部变量签名。

SetLocalSignature(Byte[])

设置描述关联动态方法的局部变量布局的局部变量签名。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

产品 版本
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.1