You can, with TypeBuilder - but this is not trivial stuff; you are essentially writing low-level things like IL at runtime. I do this occasionally, but I'm a bit crazy. The two may be related.
For what you want (PropertyGrid) a simpler option is to provide runtime properties via PropertyDescriptor; I have several such "property bag" examples here on stackoverflow. Here's one such example: .Net Property Grid. Is there a way to let the Grid manipulate object in different way
But even that is work compared to the simplest option: use a DataTable; add the columns you want and a single row, and pass the row's twin from the table's DefaultView to the PropertyGrid.