Как добавить 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;
    }
Другие вопросы по тегам