Tweaks:
-
TypeDescriptionProvider
- still replaces metadata (not extends)
- can also be added be
TypeDescriptor.AddProvider
- can be applied per-type as well as per-instance, making it possible to apply to lists without having to implement
ITypedList
-
TypeConverter
- for
PropertyGrid
, this is also the mechanism used to obtain metadata; note thatExpandableObjectConverter
simply delegates toTypeDescriptor.GetProperties
, but this is not always the case - also responsible for re-creating immutable objects (such as structs) with changes
- for
-
UITypeEditor
- also responsible for painting the preview box in
PropertyGrid
- also responsible for painting the preview box in
Additional:
IExtenderProvider
– appends properties; this may be what you were getting confused withTypeDescriptionProvider
ITypedList
– broadly the twin ofICustomTypeDescriptor
, but for lists; can be avoided by use ofTypeDescriptionProvider
and a non-object indexer on anyIList
, i.e.public T this[int index] {get;}
IListSource
– provides indirection between a data-source and the data; for example, aDataTable
implementsIListSource
, returningDefaultView
when requested