Прямая вставка байт-кода - PullRequest
4 голосов
/ 26 октября 2009

Есть ли способ динамически вставить байт-код непосредственно в мой исполняемый файл C #? Я ищу функциональность, похожую на ключевое слово asm в C ++. Очевидно, я знаю, что не могу вставить инструкции по сборке x86. Я мог бы только вставить IL байт-код.

Ответы [ 2 ]

5 голосов
/ 26 октября 2009

Да, вы можете использовать DynamicMethod с, которые в основном делают именно это (вы получаете делегат для вызова кода, который вы сгенерировали динамическим методом).

Фактически, некоторые части инфраструктуры, похоже, используют их, включая скомпилированные XSL-преобразования, скомпилированные регулярные выражения и т. Д. Они работают очень хорошо и они довольно производительны (после первоначальных затрат на их создание / компиляцию).

1 голос
/ 28 октября 2009

вы можете использовать Reflection.Emit directy - вы должны создать сборку / модуль / класс / метод и вставить IL в тело метода.

-

. .Net 2.0 позволяет использовать DynamicMethod , который может быть скомпилирован в делегате, поэтому вам не нужно динамически создавать сборку / модуль / класс.

-

В .Net 3.0 вы можете использовать ExpressionTrees для динамической генерации кода и присоединения к делегату.

-

Надеюсь, это поможет.

Рикардо Ласерда Каштелу-Бранку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...