Insertar TypeConverter en una propiedad en tiempo de ejecución, desde el interior de un UITypeEditor personalizada
-
22-09-2019 - |
Pregunta
He creado un UITypeEditor personalizado.
¿Puedo posiblemente insertar un atributo que también concede un TypeConverter a mi propiedad de dentro de la clase UITypeEditor?
He intentado lo siguiente, pero no pasa nada, no importa cómo lo giro y vuelta que:
Attribute[] newAttributes = new Attribute[1];
newAttributes[0] = new TypeConverterAttribute(typeof(BooleanConverter));
Ahora, por encima de las necesidades que tienen los siguientes unida a él de alguna manera:
TypeDescriptor.AddAttributes(context.Instance.PROPERTYNAME, newAttributes);
... pero ante todo no sé cómo llegar a la propiedad en cuestión de una manera genérica, y todo el código que intento simplemente falla. Incluso si trato de asignar el TypeConverter de esta manera, a nivel mundial, se produce un error. (Si lo establece como un atributo de la propiedad en sí funciona sin embargo, sólo para descartar que el error está en esa parte.)
Solución
TypeDescriptor
le permite añadir atributos (al menos, en lo que se refiere a System.ComponentModel
) a tipo y objetos - pero no a propiedades específicas. Para hacer eso (de manera general requeriría TypeDescriptionProvider
- sin embargo, tenga en cuenta que esto no es una cosa trivial de implementar, y que necesita para escribir todos:
- el propio proveedor
- una
ICustomTypeDescriptor
-
PropertyDescriptor
una de las cosas que quiere manipular
Es la PropertyDescriptor
que le permitiría a fingir que tenía atributos adicionales (o, a través de un cambio override
la Converter
más directamente, sin jugar con atributos).