2009-06-16 16 views
1

J'essaie d'ajouter une propriété à un type en utilisant TypeDescriptor.CreateProperty afin d'afficher une propriété supplémentaire dans une grille de propriétés, mais cette nouvelle propriété n'est pas ajoutée et lorsque j'appelle TypeDescriptor .GetProperties sur ce type pour inspecter les propriétés, cette propriété n'existe pas.TypeDescriptor.CreateProperty n'ajoute pas de propriété

Y a-t-il quelque chose que je pourrais manquer ou négliger? C'est un scénario basique et simple pour autant que je m'en souvienne.

Voici l'appel: TypeDescriptor.CreateProperty (typeof (MovieMenuItem), "ExternalMediaLocation", typeof (chaîne), null);

+1

Pourquoi ne pas publier un exemple de code qui ne fonctionne pas? – LukeH

Répondre

3

CreateProperty vous renvoie juste un PropertyDescriptor basé sur la réflexion pour le type en question (ce n'est pas AddProperty, par exemple). Quel est le scénario ici? Si vous avez juste besoin d'afficher des données supplémentaires dans DataGridView, l'option la plus simple est simplement d'ajouter une colonne supplémentaire non liée à la grille.

Vous pouvez étendre les types à l'exécution, mais pour les listes que vous avez deux options principales:

  • ITypedList (si chaque instance de la liste peut avoir différentes colonnes) - voir this answer
  • TypeDescriptionProvider - permet vous ajouter des propriétés personnalisées par type (se résume finalement à écrire un PropertyDescriptor, tout comme le premier exemple - mais différents crochets)

Les règles complètes de récupération des métadonnées basées sur les listes sont en this answer

+0

Je souhaite l'ajouter à un objet que j'édite à l'aide d'un contrôle PropertyGrid – reshefm

+0

Depuis longtemps, la dernière fois que j'ai utilisé «fortement» le modèle de composant ... le fournisseur de description de type est le lien manquant. Merci! – reshefm

Questions connexes