Вы можете, с TypeBuilder - но это не тривиальные вещи; по сути, вы пишете вещи низкого уровня, такие как IL, во время выполнения. Я делаю это время от времени, но я немного сумасшедший. Два могут быть связаны.
Для того, что вы хотите (PropertyGrid), более простой вариант - предоставить свойства времени выполнения через PropertyDescriptor; У меня есть несколько таких примеров «пакетов свойств» здесь на stackoverflow. Вот один из таких примеров: .Net Property Grid. Есть ли способ позволить Grid манипулировать объектом по-другому
Но даже это работа по сравнению с простейшим вариантом: используйте DataTable; Добавьте нужные столбцы и одну строку и передайте двойник строки из DefaultView таблицы в PropertyGrid.