TypedExpando
A class that supports dynamic typed properties
Add properties to the object on runtime
var O = new TypedExpando();
O.AddProperty("Name", typeof(string));
O.AddProperty("Age", typeof(int));
Now you can use that properties and make bindings to it
var D = (dynamic)O;
D.Name = "Rafa";
D.Age = 22;
Property types will be checked at runtime
//runtime exception:
D.Age = "Hello";
nuget: Install-Package TypedExpando