Главная страница   /   5.6. Резюме (Метапрограммирование в .NET

Метапрограммирование в .NET

Метапрограммирование в .NET

Кевин Хазард

5.6. Резюме

В этой главе вы увидели силу Reflection.Emit API для генерации кода во время выполнения. Вы узнали о кодах операций, которые являются основой для каждого .NET языка, и о том, как они используются, чтобы определить и структурировать реализации. Вы нашли мощные методы для отладки динамического кода, чтобы обеспечить его правильность. Вы обнаружили два различных варианта в этом API и увидели ситуации, когда следует использовать тот или иной вариант. С этой обретенной информацией теперь у вас есть целый ряд инструментов, чтобы генерировать код во время выполнения для сценариев, упомянутых в разделе 5.2. Нужен новый тип, который выступит в качестве посредника объекта или mock типа? Создайте его с классами Reflection.Emit. Хотите оптимизировать путь вызовов, который определяется во время выполнения? Постройте динамический метод. Хотите сделать компилятор для языка, который вы создали? Вы можете использовать для этого классы Reflection.Emit. Каждый раз, когда у вас есть необходимость генерировать код во время выполнения,System.Reflection.Emit является вашим другом.

Хотя генерация кода при помощи кодов операций является чрезвычайно мощной, есть еще один способ в .NET для выполнения такой работы с использованием API более высокого уровня, который, возможно, легче понять, но он такой же мощный, как сырое использование кодов операций. Эта техника использует так называемые выражения, и это то, о чем речь пойдет в следующей главе.