.Net进阶(2)GetILGenerator
序言
ILGenerator
3种使用方式
ConstructorBuilder.GetILGenerator方法
DynamicMethod.GetILGenerator 方法
MethodBuilder.GetILGenerator 方法
通过emit创建动态代理,实现实体的创建
Reflection.Emit的作用是能够在程序运行的时候动态生成Class,Method和Field.
这样带来的好处是在程序运行的时候产生DynamicProxy,从而可以达到AOP拦截的作用(就是AOP.NET的实现原理).
由于Emit中提供了TypeBuilder(生成Class的类),MethodBuilder(生成Method的类)以及FieldBuilder(生成类的成员变量的类)等等.
由于MethodBuilder只能生成函数的申明,不能生成函数的执行代码,所以要想生成一个完整的函数,就不可避免的要用到ILGenerator类.
ILGenerator只能通过Emit(...)函数来增加直接的IL代码,所以使用Emit的时候也得明白一些关于IL的知识.
C#ThreadLocal和AsyncLocal
GetILGenerator
Emit
IL