2

我正在尝试使用 TypeDescriptor.CreateProperty 将属性添加到类型中,以便在属性网格中显示其他属性,但是未添加此新属性,并且当我在该类型上调用 TypeDescriptor.GetProperties 以检查属性时,此属性不存在。

我可能会遗漏或忽略某些东西吗?据我所知,这是一个基本而简单的场景。

这是调用:TypeDescriptor.CreateProperty(typeof (MovieMenuItem), "ExternalMediaLocation", typeof (string), null);

4

1 回答 1

3

CreateProperty只是给你一个基于反射PropertyDescriptor的类型(例如,它不是AddProperty)。这里的场景是什么?如果您只需要在 中显示额外的数据DataGridView,最简单的选择就是在网格中添加一个额外的未绑定列。

可以在运行时扩展类型,但对于列表,您有两个主要选项:

  • ITypedList(如果列表的每个实例可以有不同的列) - 看到这个答案
  • TypeDescriptionProvider- 允许您为每种类型添加自定义属性(最终归结为编写 a PropertyDescriptor,就像第一个示例一样 - 但不同的钩子)

如何获取基于列表的元数据的完整规则在这个答案中

于 2009-06-16T11:22:48.657 回答