Expression.Compile
по существу делает это - это ключ к некоторым LINQ.
В настоящее время я использую рефлексию emit для перезаписи API сериализации - потому что иногда рефлексия просто недостаточно хороша. Когда это произойдет, это также позволит ему генерировать dll (очень похоже на то, как работает sgen), позволяя полностью статический код (надеюсь, это сделает его удобным для iPhone).
Я также использую аналогичный подход в HyperDescriptor , чтобы обеспечить очень быстрый поиск свойств на основе имен.
Я также использовал emit для таких вещей:
все вопросы, связанные с SO.
Наконец, этот подход IL является ядром protobuf-net "v2"; причина в том, что это позволяет мне и иметь быструю модель во время выполнения (компилируя ее через IL на лету), и записывать то же самое непосредственно в статически скомпилированную dll , так что он работает на таких вещах, как iPhone, Phone 7 и т. д. (в которых отсутствуют необходимые API-интерфейсы метапрограммирования).