Можно ли создать динамическую копию сборки или модуля/класса? Я смог легко найти, как создать динамическую сборку или модуль с нуля, используя AssemblyBuilder
/ModuleBuilder
(как показано здесь), но есть ли способ создать копию существующей сборки или типа в качестве соответствующего типа Builder?
Изменить 1
Например, предположим, что у вас есть стандартное консольное приложение с обязательным классом Program
и методом Main
, и вы добавляете в проект еще один класс с именем «A». Моя цель — создать динамическую копию класса A
в методе Main
, используя ModuleBuilder
или что-то подобное.
Редактировать 2
Причина, по которой я хочу сделать копию класса A
, заключается в том, что мне нужен точный дубликат класса 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);
По сути, я просто хотел бы поместить Assembly
в AssemblyBuilder
или Type
в TypeBuilder
. Мне также не нужно сохранять сборку.