C#发射

发射是在运行时,通过中间代码,动态生成程序集,类型和成员。

发射相关类型

发射相关的类型都在System.Reflection.Emit命名空间下。

OpCodes包含很多静态只读字段,表示不同的指令。

DynamicMethod表示动态创建的方法。

AssemblyBuilder支持动态创建程序集创建。

TypeBuilder支持动态创建类型。

EnumBuilder动态创建枚举。

MethodBuilder动态创建方法。

PropertyBuilder动态创建属性。

EventBuilder动态创建事件。

ConstructorBuilder动态创建构造函数。

CustomAttributeBuilder动态创建特征。

FieldBuilder动态创建字段。

ILGenerator生成IL指令。

LocalBuilder动态创建局部变量。

发射的作用

运行时生成类型

动态代理

运行时生成方法调用

优化反射

突破C#语言限制

有些功能C#中不能够使用,但在中间语言中可以使用