学习记录:定义动态程序集和动态模块

记录原因:

学习架构时关于动态程序集知识点不牢固,故查官方文档记录。

 

官方文档地址: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");

 

posted @ 2022-02-21 12:30  塔斯丁狗  阅读(71)  评论(0)    收藏  举报