ICustomTypeDescriptor,TypeDescriptionProvider,。和UITypeEditor
-
09-09-2019 - |
题
我试图获得一个总体了解如何使用ICustomTypeDescriptor,TypeDescriptionProvider,。和UITypeEditor改变如何PropertyGrid显示和接口有一个对象。
可以有人告诉我如果这是正确的,或者如果我错过了任何重大的概念或分?我真的只是想了解为什么当,你会使用的每一类。
ICustomTypeDescriptor
- 执行这一界面类中完全复盖地性质的一类,并取代他们的PropertyDescriptors返回的ICustomTypeDescriptor.GetProperties()
TypeDescriptionProvider
- 用于延长现有的特性的一类
- 一TypeDescriptionProvider是所附的一类通过TypeDescriptionProvider属性
- 该GetTypeDescriptor()方法TypeDescriptionProvider返回ICustomTypeDescriptor要 所附的 到现有的性质的类型。
- PropertyGrid将显示两性之类的找到通过反射特性添加到类通过TypeDescriptionProvider
。
- 转换的类型之间
- 在术语的使用PropetyGrid用于转换之间复杂的类型和基本类型,可以显示的/编辑的财产的网格。
- 该GetStandard值的方法。还可以被用来显示可能值的列表中propertygrid
UITypeEditor
- 定义一个自定义的编辑操作性的一个复杂的类型。
- 相关的财产通过一个属性。
所以ICustomTypeDescriptor一TypeDescription提供者是使用增加/修改/替换的整个性质的对象。。和UITypeEditor应用于个人特性和控制这些具体属性的接口。
解决方案
调整:
TypeDescriptionProvider
- 仍然 替换 元数据(不延伸)
- 也可以加入进
TypeDescriptor.AddProvider
- 可以适用每种类型,以及每个实例,使得能够适用于清单不具有实现
ITypedList
TypeConverter
- 对于
PropertyGrid
, 这也是该机构用来获取元数据;注意,ExpandableObjectConverter
简单地代表TypeDescriptor.GetProperties
, 但这不是总的情况 - 还负责重建不可改变的对象(例如结构)的变化
- 对于
UITypeEditor
- 还负责绘画预览框在
PropertyGrid
- 还负责绘画预览框在
其他:
IExtenderProvider
- 追加 属性;这可能是什么,你变得混淆TypeDescriptionProvider
ITypedList
-广泛的双胞胎ICustomTypeDescriptor
, ,但是对于名单;可以避免由使用TypeDescriptionProvider
并非象索引的任何IList
, 即public T this[int index] {get;}
IListSource
-提供间接之间的一个数据源和数据;例如,一个DataTable
实现了IListSource
, 返回DefaultView
当要求
不隶属于 StackOverflow