Есть ли способ создать новый тип во время выполнения?

Я собираюсь задать вопрос, который может показаться странным.

Есть ли способ построить новый класс во время выполнения? Или, по крайней мере, добавить новое свойство в существующий класс.

Я имею в виду создание класса, который не существует, а не экземпляр существующего класса. Позже я мог бы использовать отражения, чтобы загрузить и использовать этот класс.