Как мне добавить PropertyDescriptors в класс, а затем переопределить их?

StackOverflow https://stackoverflow.com/questions/1256854

Вопрос

Если у меня есть класс, который реализует 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;
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top