Insérez TypeConverter personnalisé sur une propriété à l'exécution, à l'intérieur d'une coutume UITypeEditor

StackOverflow https://stackoverflow.com/questions/2535647

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.)

Était-ce utile?

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).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top