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