Есть ли способ динамически вставить байт-код непосредственно в мой исполняемый файл C#? Я ищу функциональность, похожую на ключевое слово asm в C++. Очевидно, я знаю, что не могу вставлять инструкции сборки x86. Я мог бы только вставить IL Bytecode.Прямая вставка байткода
ответ
Да, вы можете использовать DynamicMethod
s, которые в основном делают именно это (вы получаете делегата для вызова кода, который вы создали с помощью динамического метода).
Фактически, некоторые части фреймворка, похоже, используют их, включая скомпилированные преобразования XSL, скомпилированные регулярные выражения и т. Д. Они работают очень хорошо, и они довольно эффективны (после первоначальных накладных расходов для их создания/компиляции).
Вы можете использовать Reflection.Emit directy - вы должны создать сборку/модуль/класс/метод и вставить IL на тело метода.
-
.NET 2.0 вы можете использовать DynamicMethod, который может быть скомпилирован в качестве делегата, так что вам не нужно создавать сборки/модуля/класс динамически.
-
С .Net 3.0 вы можете использовать ExpressionTrees динамически генерировать код и прикрепить к делегату.
-
Надеюсь, это поможет.
Ricardo Lacerda Castelo Branco
- 1. Прямая и двоичная вставка сортировки
- 2. Прямая вставка, как считать свопы?
- 3. Дизайн байткода?
- 4. Код подтверждения байткода Android
- 5. Поиск размера байткода метода
- 6. java.lang.VerifyError после инъекции байткода
- 7. Вызвать метод класса байткода, java
- 8. Сохранение значений в формате байткода
- 9. Непоследовательность байткода - java.lang.IncompatibleClassChangeError: Реализация класса
- 10. Чтение байткода из класса Path
- 11. Прямая вкладка
- 12. Реализация REPL/eval в компилированном языке байткода
- 13. Выполнено выполнение отдельных индивидуальных инструкций байткода Java
- 14. Формат байткода изменен для сигнатур функций?
- 15. Функция замены байткода ASM не завершена
- 16. Расширение байткода для полей в классе
- 17. java constant против обратного проектирования байткода
- 18. SVG Прямая линия анимации
- 19. Прямая трансляция видеофайла
- 20. Прямая связь TCP/IP
- 21. Прямая нарезка двоичного дерева
- 22. Что такое прямая память?
- 23. Прямая почта Moneris безопасна?
- 24. HTML5 getUserStream прямая трансляция
- 25. Mediaelement.js и прямая трансляция
- 26. прямая страница с HREF
- 27. прямая ссылка facebook videos
- 28. Прямая сумма матричной функции
- 29. Прямая ссылка и рекурсия
- 30. S3 Прямая загрузка производительности
Именно то, что я искал! Спасибо приятель! – Icemanind
Добро пожаловать. Некоторая интересная информация может быть найдена здесь, на SO: http://stackoverflow.com/questions/tagged/dynamicmethod (и один образец у меня здесь: http://stackoverflow.com/questions/1516119) - получайте удовольствие! ;) – Lucero