This is just a quick project I threw together while learning how
Reflection.Emit works. It is not really meant for actual use; it's just something I made for learning purposes.
What can it do?
Bagger facilitates the runtime construction of semi-dynamic, kinda-type-safe property bag types, using
Reflection.Emit. These can then be used for data binding, etc.
Dynamically creating a type:
PropertyBagBuilder builder = new PropertyBagBuilder(); builder.AddProperty("Name", typeof(string)); builder.AddProperty("Value1", typeof(int)); builder.AddProperty("Value2", typeof(int)); Type type = builder.Build();
Instantiating the type:
These types can be instantiated as usual...
object instance = Activator.CreateInstance(type);
All types created by
PropertyBagBuilder also implement the
IPropertyBag interface, so you can easily access the properties by name.
IPropertyBag bag = Activator.CreateInstance(type) as IPropertyBag; string name = (string)bag.GetValue("Name"); bag.SetValue("Value1", 1);
Copyright Matthew King 2012.
Bagger is licensed under the Boost Software License. Refer to license.txt for more information.