前置
Emit简单使用
public static void Main(string[] args){
// -- 创建程序集
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(
new AssemblyName("Example.Generator"),
AssemblyBuilderAccess.RunAndCollect);
// -- 创建模块
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("Generators");
// -- 创建 Generator 类
TypeBuilder typeBuilder = moduleBuilder.DefineType("Generator");
// -- 创建构造函数
ConstructorBuilder constructorBuilder =
typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Type.EmptyTypes)
// - 填充构造函数内需要执行的IL代码
ILGenerator constructGenerator = constructorBuilder.GetILGenerator();
// - 定义一个字符串
constructGenerator.Emit(OpCodes.Ldstr, "通过Emit构建构造函数中的逻辑代码");
// - 调用Console.WriteLine()输出这句话
constructGenerator.Emit(OpCodes.Call, typeof(Console).GetMethod(