You are
not going to be able to add new Properties to a Class, or an instance of the Class, at run-time with .NET; you can use Reflection.Emit and its TypeBuilder facility at run-time to create a
new Class, and make it inherit from an existing Class, and then add Properties to the new Class: [
^].
Please take note that if you go into this area of programming: it is very complex, and may add substantial costs to your development efforts. I strongly advise you carefully evaluate if you really need to implement this feature.
There are other alternatives you might investigate, the most relevant of which is:
1. Use of .NET's Expando object (FrameWork 4.0) in the Dynamic Language Runtime (DLR): [
^], [
^]. Anoop Madhusudanan has an outstanding article on CP: [
^] on programming with DLR, using Expando and DynamicObject, and his own very interesting "Elastic Object.
Also check-out:
2. Code-Weaving, AOP, Aspect Oriented Programming, in which structured comments in your code are rendered into code inserted by a compile post-processor into IL: [
^], [
^], [
^].