是否可以创建程序集或模块/类的动态副本?AssemblyBuilder
我可以很容易地找到如何使用/ ModuleBuilder
(如此处所示)从头开始创建动态程序集或模块,但是有没有办法将现有程序集或类型的副本创建为其各自的 Builder 类型?
编辑 1
例如,假设您有一个标准控制台应用程序,其中包含必需的Program
类和Main
方法,并且您将另一个类添加到项目中,称为“A”。我的目标是在使用方法或类似方法中创建A
类的动态副本。Main
ModuleBuilder
编辑 2
我想要复制 class 的原因A
是因为我想要一个完全相同的 class 副本A
,包括方法、字段、属性等,但是是动态创建的。我不想要的是必须使用 TypeBuilder/CodeDom 手动创建类型及其所有成员(方法、字段、属性等),因为在某些情况下,我可能不知道关于一个类及其内部工作或类可能很大且繁琐/无法使用此方法重现。
希望一些伪代码可以说明我在寻找什么:
// create AssemblyBuilder using the assembly of the A class so you end up with a
// dynamic copy of the assembly
AssemblyBuilder ab = new AssemblyBuilder(Assembly.GetAssembly(typeof(A)));
// get the Type as a TypeBuilder from the AssemblyBuilder
TypeBuilder tb = ab.GetModule("Test.exe").GetType(typeof(A).FullName);
我基本上只是想将 an 装箱Assembly
为 anAssemblyBuilder
或Type
as TypeBuilder
。我也不需要能够保存程序集。