Как добавить PropertyDescriptors в класс, а не переопределить их? - PullRequest
1 голос
/ 10 августа 2009

Если у меня есть класс, который реализует ICustomTypeDescriptor , я могу переопределить метод GetProperties () , чтобы полностью заменить все свойства класса на мой пользовательский PropertyDescriptors,

Но что, если я хочу сохранить существующие свойства класса и добавить к нему дополнительные свойства? Есть ли способ вернуть набор пользовательских дескрипторов свойств, которые добавляются к существующим свойствам класса?

Например, я хочу, чтобы пользователь мог определять пользовательские свойства в моей программе, которые будут отображаться в сетке свойств. Значения пользовательских свойств будут храниться в словаре (строковый ключ, значение объекта) коллекции, и я хочу добавить PropertyDescriptors , который будет также читать и записывать значения и из этой коллекции на основе значений ключа.

Я не думаю, что IExtenderProvider будет работать, потому что он только добавляет свойства одного класса к другому. Но мне нужно иметь возможность добавлять и удалять свойства динамически во время выполнения. Могу ли я иметь класс IExtenderProvider , который также реализует ICustomTypeDescriptor , чтобы его свойства можно было определить во время выполнения?

1 Ответ

1 голос
/ 11 августа 2009

Должно быть в состоянии, просто добавив к текущей коллекции:

    public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
    {
        PropertyDescriptorCollection cols = base.GetProperties(attributes);
        cols.Add(); // Add your custom property descriptor here
        return cols;
    }
...