I am trying to add a property to a type using TypeDescriptor.CreateProperty in order to display an additional property in a property grid, however this new property is not added and when I call TypeDescriptor.GetProperties on that type to inspect the properties, this property does not exist.
It there something I might be missing or overlooking? This is a basic and simple scenario as far as I remember.
Here is the call:
TypeDescriptor.CreateProperty(typeof (MovieMenuItem), “ExternalMediaLocation”, typeof (string), null);
CreatePropertyjust gives you back a reflection-basedPropertyDescriptorfor the type in question (it isn’tAddProperty, for example). What is the scenario here? If you just need to display extra data inDataGridView, the simplest option is simply to add an extra unbound column to the grid.You can extend types at runtime, but for lists you have two main options:
ITypedList(if each instance of the list can have different columns) – see this answerTypeDescriptionProvider– allows you to add custom properties per-type (ultimately boils down to writing aPropertyDescriptor, just like the first example – but different hooks)The full rules of how list-based metadata is fetched are in this answer