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

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

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

Кевин Хазард

12. Руководство по использованию

В следующей таблице приведены рекомендации по использованию техник, продемонстрированных в главах 2-10. Они должны помочь вам в принятии решений о том, когда использовать определенный подход или фреймворк, в зависимости от архитектуры и параметров построения. Глава 1 не входит сюда, потому что это, по сути, вводная глава.

Глава Технология Руководство
2 Изучение кода и метаданных при помощи рефлексии ИспользованиеSystem.Reflection API Использование произвольных элементов кода (например, методов, свойств и т.д.) на основе определений базового класса или стандартных соглашений по именованиям; составление путей динамического кода во время выполнения или выполнение кода на основе существующих метаданных
3 Text Template Transformation Toolkit (T4) Использование движка T4 Генерация нового текста (обычно кода) с помощью шаблонов для упрощения создания подобного кода
4 Создание кода при помощи CodeDOM Использование System.CodeDom API Создание нового кода из API, основанного на выражениях, для различных языков
5 Создание кода при помощи Reflection.Emit ИспользованиеSystem.Reflection.Emit API Создание и выполнение нового кода во время выполнения на уровне IL, как для целых типов, так и различных методов; или компиляция динамических, открытых путей выполнения кода на основе рефлексии в целях повышения производительности
6 Создание кода при помощи выражений Использование System.Linq.Expressions API Создание новых методов во время выполнения при помощи высокоуровневого API или выражений
7 Создание кода при помощи переписывания IL Использование Cecil API Статический анализ сборок; полный контроль над содержимым сборки или послекомпиляционное внедрение нового кода в любую сборку
8 Dynamic Language Runtime (DLR) Использование DLR Поддержка динамических и скриптовых языков в .NET; обработка выполнения динамического кода в .NET без непосредственного использования рефлексии
Языки программирования и инструменты Использование альтернативных языков (например, Boo) или сторонних библиотек (например, PostSharp) Эксперименты с концепциями кодирования, которые не поддерживаются в C# или VB, а также использование существующих фреймворков для обработки концепций метапрограммирования
Управление .NET компилятором Использование Project Roslyn Использование сервисов компилятора для модификации кода; анализ в режиме реального времени C# или VB кода; интеграция в Visual Studio пользовательского баг-трекингового кода и рефакторинга