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

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

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

有帮助吗?

解决方案

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top