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