TypeDescriptor.CreateProperty не добавляет свойство
-
05-07-2019 - |
Вопрос
Я пытаюсь добавить свойство к типу с помощью TypeDescriptor.CreateProperty, чтобы отобразить дополнительное свойство в сетке свойств, однако это новое свойство не добавляется, и когда я вызываю TypeDescriptor.GetProperties для этого типа для проверки свойств, это свойство не существует.
Может быть, я что-то упускаю или упускаю из виду?Насколько я помню, это базовый и простой сценарий.
Вот звонок:TypeDescriptor.CreateProperty(typeof (MovieMenuItem), «ExternalMediaLocation», typeof (string), null);
Решение
CreateProperty
просто возвращает вам основанный на отражении PropertyDescriptor
для рассматриваемого типа (это не AddProperty
, например).Каков здесь сценарий?Если вам просто нужно отобразить дополнительные данные в DataGridView
, самый простой вариант — просто добавить в сетку дополнительный несвязанный столбец.
Ты может расширять типы во время выполнения, но для списков есть два основных варианта:
ITypedList
(если каждый экземпляр списка может иметь разные столбцы) – см. этот ответTypeDescriptionProvider
- позволяет добавлять пользовательские свойства для каждого типа (в конечном итоге сводится к написаниюPropertyDescriptor
, как и первый пример - но другие крючки)
Полные правила получения метаданных на основе списков приведены в этот ответ