Estoy tratando de obtener una comprensión general de cómo se usan ICustomTypeDescriptor, TypeDescriptionProvider, TypeConverter y UITypeEditor para cambiar la forma en que un PropertyGrid muestra e interactúa con un objeto.ICustomTypeDescriptor, TypeDescriptionProvider, TypeConverter y UITypeEditor
¿Puede alguien decirme si esto es correcto, o si omití algún concepto o punto importante? Realmente estoy tratando de entender por qué y cuándo usarías cada clase.
ICustomTypeDescriptor
- La implementación de esta interfaz en una clase totalmente anula las propiedades nativas de una clase y los reemplaza por los PropertyDescriptors devueltos por ICustomTypeDescriptor.GetProperties()
TypeDescriptionProvider
- utiliza para extender sobre las propiedades existentes de una clase
- A TypeDescriptionProvider se anexa a una clase a través de un atributo TypeDescriptionProvider
- El GetTypeDescriptor() de la TypeDescriptionProvider devuelve un ICustomTypeDescriptor ser adjunta a las propiedades existentes del tipo
- A PropertyGrid mostrará tanto las propiedades de la clase encontrado a través de la reflexión, y las propiedades agregado a la clase a través de la TypeDescriptionProvider
TypeConverter
- convierte entre tipos
- En términos de usar una PropetyGrid utilizada para convertir tipos complejos y tipos primitivos que se pueden mostrar/editar en la cuadrícula de propiedades.
- El GetStandard valores de método de un TypeConverter también se puede utilizar para mostrar una lista de valores posibles en el PropertyGrid
UITypeEditor
- Define un editor personalizado para manipular una propiedad de un complejo tipo.
- Asociado con una propiedad mediante un atributo.
Así ICustomTypeDescriptor un proveedor TypeDescription se utilizan para añadir/cambiar/reemplazar propiedades enteras de objetos. TypeConverter y UITypeEditor se aplican a propiedades individuales y controlan cómo se interconectan esas propiedades específicas.