.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

 

资料

C# 动态生成程序集

posted @ 2022-06-29 17:30  ~沐风  阅读(120)  评论(0编辑  收藏  举报