我试图全面了解您如何使用 ICustomTypeDescriptor、TypeDescriptionProvider、TypeConverter 和 UITypeEditor 来更改 PropertyGrid 显示和与对象交互的方式。
有人可以告诉我这是否正确,或者我是否遗漏了任何主要概念或要点?我真的只是想了解您为什么以及何时使用每个课程。
ICustomTypeDescriptor
- 在类中实现此接口完全覆盖类的本机属性,并用 ICustomTypeDescriptor.GetProperties() 返回的 PropertyDescriptors 替换它们
类型描述提供者
- 用于扩展类的现有属性
- TypeDescriptionProvider 通过 TypeDescriptionProvider 属性附加到类
- TypeDescriptionProvider 的 GetTypeDescriptor() 方法返回要附加到该类型的现有属性的 ICustomTypeDescriptor。
- PropertyGrid 将显示通过反射找到的类的属性,以及通过 TypeDescriptionProvider 添加到类的属性
类型转换器
- 在类型之间转换
- 就使用用于在属性网格中显示/编辑的复杂类型和原始类型之间转换的 PropetyGrid 而言。
- TypeConverter 的 GetStandard values 方法也可用于在 propertygrid 中显示可能值的列表
UITypeEditor
- 定义用于操作复杂类型属性的自定义编辑器。
- 通过属性与属性相关联。
因此 ICustomTypeDescriptor 一个 TypeDescription 提供程序用于添加/更改/替换对象的整个属性。TypeConverter 和 UITypeEditor 应用于单个属性并控制这些特定属性的交互方式。