Как мне добавить PropertyDescriptors в класс, а затем переопределить их?
-
12-09-2019 - |
Вопрос
Если у меня есть класс, который реализует ICustomTypeDescriptor ( Пользовательский тип ) Я могу переопределить GetProperties() Получить свойства() метод, позволяющий полностью заменить все свойства класса моими пользовательскими Описатели свойств.
Но что, если я хочу сохранить существующие свойства класса и добавить к классу дополнительные свойства?Есть ли способ вернуть набор пользовательских дескрипторов свойств, которые добавляются к существующим свойствам класса?
Например, я хочу, чтобы пользователь мог определять пользовательские свойства в моей программе, которые будут отображаться в таблице свойств.Значения пользовательских свойств будут сохранены в Словарь (строковый ключ, значение объекта) коллекция, и я хочу добавить Описатели свойств это тоже будет считывать и записывать значения из этой коллекции на основе ключевых значений.
Я не думаю, что IExtenderProvider - поставщик сработало бы, потому что это только добавляет свойства одного класса к другому.Но мне нужно иметь возможность динамически добавлять и удалять свойства во время выполнения.Могу я получить IExtenderProvider - поставщик класс , который также реализует ICustomTypeDescriptor ( Пользовательский тип ) чтобы свойства, которые он добавляет, можно было определить во время выполнения?
Решение
Должна быть возможность, просто добавив в текущую коллекцию:
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
{
PropertyDescriptorCollection cols = base.GetProperties(attributes);
cols.Add(); // Add your custom property descriptor here
return cols;
}