记录原因:
学习架构时关于动态程序集知识点不牢固,故查官方文档记录。
官方文档地址:https://docs.microsoft.com/zh-cn/dotnet/framework/reflection-and-codedom/how-to-define-a-generic-method-with-reflection-emit
定义动态程序集和动态模块,以包含泛型方法所属类型。 在这种情况下,程序集仅有一个模块 DemoMethodBuilder1,模块名称为该程序集名称加上扩展名。
在此示例中,因为要将程序集保存在磁盘并执行,所以指定了 AssemblyBuilderAccess.RunAndSave。
可以使用 Ildasm.exe(IL 反汇编程序)检查 DemoMethodBuilder1.dll,并将其与步骤 1 中所示方法的 Microsoft 中间语言 (MSIL) 比较。
AssemblyName asmName = new AssemblyName("DemoMethodBuilder1"); AppDomain domain = AppDomain.CurrentDomain; AssemblyBuilder demoAssembly = domain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.RunAndSave); //定义包含代码的模块。为一个模块的程序集,模块名称是程序集名称加上文件扩展名。
ModuleBuilder demoModule = demoAssembly.DefineDynamicModule(asmName.Name, asmName.Name+".dll");