确实,对 Type 有特殊处理……这种方法用于 IDE 等中以提前配置元数据。如果您查看 IDE 生成的绑定,它们会执行以下操作:
bindingSource1.DataSource = typeof(MyObject);
saying "when we get real data, we expect MyObject isntance(s)"; i.e. when you ask for "Name", it is looking for the name property on MyObject - not the Name of the Type instance. This allows grids etc to obtain their metadata without having to wait for the real data; but as a consequence you can't bind to Type "for real".
The System.ComponentModel code is identical between simple bindings and list bindings (give or take a currency manager), so simple bindings also inherit this behaviour. Equally, you can't bind to properties of a class that implements IList/IListSource, since this is interpreted in a special way.
Your extra class seems a reasonable approach.