Below I am providing a link to the official reference sample on custom type converters.
As far as making a custom class an expandable object in the properties window, the ExpandableObjectConverter may be the simplest way to implement.
[TypeConverter(typeof(ExpandableObjectConverter))]
Below is a link to an example.
Comment