2010-03-29 2 views
2

J'ai créé un UITypeEditor personnalisé.Insérer un TypeConverter personnalisé sur une propriété au moment de l'exécution, à partir d'un UITypeEditor personnalisé

Puis-je éventuellement insérer un attribut qui attache également un TypeConverter à ma propriété de à l'intérieur de la classe UITypeEditor?

J'ai essayé ce qui suit, mais rien ne se passe, peu importe comment je tordre et tourner:

Attribute[] newAttributes = new Attribute[1]; 
newAttributes[0] = new TypeConverterAttribute(typeof(BooleanConverter)); 

Maintenant, les besoins ci-dessus pour avoir ce qui suit qui s'y rattachent en quelque sorte:

TypeDescriptor.AddAttributes(context.Instance.PROPERTYNAME, newAttributes); 

... mais d'abord je ne sais pas comment accéder à la propriété en question de manière générique, et tout le code que j'essaie échoue. Même si j'essaie d'assigner le TypeConverter de cette manière globalement, il échoue. (Il en guise d'attribut sur la propriété elle-même fonctionne bien, juste pour exclure que le bogue est dans cette partie.)

Répondre

2

TypeDescriptor vous permet d'ajouter des attributs (au moins, en ce qui 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, sachez 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 changement le Converter plus directement, sans jouer avec des attributs).

+0

Ah ouais, ça l'explique. Et puisque je voulais éviter de recréer le PropertyDescriptor, je m'en tiendrai probablement à devoir utiliser les attributs à l'ancienne. Cela ressemble à trop de tracas pour enregistrer une seule ligne de code sur quelques propriétés. Merci! – Pedery

Questions connexes