Вопрос

Я пытаюсь добавить свойство к типу с помощью 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