Я пытаюсь получить общее представление о том, как вы используете ICustomTypeDescriptor, TypeDescriptionProvider, TypeConverter и UITypeEditor, чтобы изменить, как PropertyGrid отображает и взаимодействует с объектом.
Может ли кто-нибудь сказать мне, правильно ли это, или если я пропустил какие-либо основные концепции или точки? Я просто пытаюсь понять, почему и когда вы будете использовать каждый класс.
ICustomTypeDescriptor
- Реализация этого интерфейса в классе totaly переопределяет собственные свойства класса и заменяет их PropertyDescriptors, возвращаемыми ICustomTypeDescriptor.GetProperties()
TypeDescriptionProvider
- Используется для расширения существующих свойств класса
- ТипDescriptionProvider добавляется к классу через атрибут TypeDescriptionProvider
- Метод GetTypeDescriptor() для TypeDescriptionProvider возвращает ICustomTypeDescriptor как прилагаемый к существующим свойствам типа.
- PropertyGrid покажет как свойства класса, найденного через Reflection, так и свойства, добавленные в класс через TypeDescriptionProvider
TypeConverter
- Преобразование между типами
- С точки зрения использования ProphetGrid, используемого для преобразования между сложными типами и примитивными типами, которые могут отображаться/редактироваться в сетке свойств.
- Метод значений GetStandard для TypeConverter также может использоваться для отображения списка возможных значений в свойствах
UITypeEditor
- Определяет настраиваемый редактор для управления свойством сложного типа.
- Связано с свойством через атрибут.
Таким образом, ICustomTypeDescriptor провайдер TypeDescription используется для добавления/изменения/замены целых свойств объектов. TypeConverter и UITypeEditor применяются к отдельным свойствам и контролируют взаимодействие этих конкретных свойств.