Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Генерирование метода HelloWorld()
Генерирование метода HelloWorld()
Наконец, рассмотрим задачу генерирования метода SayHello(). Первой задачей здесь оказывается получение типа MethodBuilder из переменной helloWorld-Class. После этого определяется указанный метод и получается ILGenerator, позволяющий добавить соответствующие CIL-инструкции.
// Создание метода SayHello.
MethodBuilder sayHiMethod = helloWorldClass.DefineMethod("SayHello", MethodAttributes.Public, null, null);
methodIL = sayHiMethod.GetILGenerator();
// Вывод на консоль.
methodIL.EmitWriteLine("Всем привет!");
methodIL.Emit(Opcodes.Ret);
Здесь создается открытый метод (MethodAttributes.Public), не имеющий параметров и не возвращающий ничего (на это указывают значения null в вызове DefineMethod()). Также обратите внимание на вызов EmitWriteLine(). Этот вспомогательный член класса ILGenerator автоматически записывает строку в стандартный поток вывода.
- Исследование пространства имен System.Reflection.Emit
- Роль System.Reflection.Emit.ILGenerator
- Генерирование динамического компоновочного блока
- Генерирование компоновочного блока и набора модулей
- Роль типа ModuleBuilder
- Генерирование типа HelloClass и принадлежащей ему строковой переменной
- Генерирование конструкторов
- Генерирование метода HelloWorld()
- Использование динамически сгенерированного компоновочного блока
- Генерирование конструкторов
- Генерирование динамического компоновочного блока
- Генерирование типа HelloClass и принадлежащей ему строковой переменной
- Пример применения метода «пять почему»
- Генерирование исключений
- Два метода рекламы. И жизни
- 2.5.1. Основные положения метода структурного проектирования
- 10.1.16. Применение метода readpartial
- Генерирование события оплаты
- Приложение 1 Три метода увеличения ctr в высококонкурентных тематиках
- Ограничения метода отображения файлов
- Пример: последовательная обработка файлов с использованием метода отображения