我正在尝试使用 TypeDescriptor.CreateProperty 将属性添加到类型,以便在属性网格中显示附加属性,但是未添加此新属性,并且当我对该类型调用 TypeDescriptor.GetProperties 来检查属性时,该属性不存在。
我可能遗漏或忽略了一些东西吗?据我所知,这是一个基本且简单的场景。
电话如下: TypeDescriptor.CreateProperty(typeof (MovieMenuItem), "ExternalMediaLocation", typeof (string), null);
最佳答案
CreateProperty
只是为您返回相关类型的基于反射的 PropertyDescriptor
(例如,它不是 AddProperty
)。这里的场景是怎样的?如果您只需要在 DataGridView
中显示额外的数据,最简单的选择就是向网格添加额外的未绑定(bind)列。
您可以在运行时扩展类型,但对于列表,您有两个主要选项:
ITypedList
(如果列表的每个实例可以有不同的列) - 请参阅 this answerTypeDescriptionProvider
- 允许您为每种类型添加自定义属性(最终归结为编写PropertyDescriptor
,就像第一个示例 - 但不同的 Hook )
如何获取基于列表的元数据的完整规则位于 this answer
关于c# - TypeDescriptor.CreateProperty 不添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1000819/