Insérez TypeConverter personnalisé sur une propriété à l'exécution, à l'intérieur d'une coutume UITypeEditor
-
22-09-2019 - |
Question
J'ai créé un UITypeEditor personnalisé.
Puis-je insérer éventuellement un attribut qui attache également un TypeConverter à ma propriété de dans la classe UITypeEditor?
J'ai essayé ce qui suit, mais rien ne se passe, peu importe comment je tords et la transformer:
Attribute[] newAttributes = new Attribute[1];
newAttributes[0] = new TypeConverterAttribute(typeof(BooleanConverter));
Maintenant, les besoins ci-dessus pour avoir les éléments suivants qui s'y rattachent en quelque sorte:
TypeDescriptor.AddAttributes(context.Instance.PROPERTYNAME, newAttributes);
... mais tout d'abord je ne sais pas comment se rendre à la propriété en question d'une manière générique, et tout le code que j'essaie juste échoue. Même si je tente d'assigner le TypeConverter de cette manière globalement, elle échoue. (Réglage comme un attribut sur la propriété elle-même fonctionne bien, juste pour exclure que le bogue est dans cette partie.)
La solution
TypeDescriptor
vous permet d'ajouter des attributs (au moins, dans la mesure où System.ComponentModel
est concerné) types et objets - mais pas à des propriétés spécifiques. Pour ce faire (d'une manière générale, il faudrait TypeDescriptionProvider
- toutefois, noter que ce n'est pas une chose triviale à mettre en œuvre, et vous devez écrire tous:
- le fournisseur lui-même
- un
ICustomTypeDescriptor
- un
PropertyDescriptor
pour les choses que vous voulez manipuler
Il est le PropertyDescriptor
qui vous permettra de prétendre que vous aviez des attributs supplémentaires (ou, par override
changer le Converter
plus directement, sans déconner avec des attributs).