Question

J'essaie d'ajouter une propriété à un type à l'aide de TypeDescriptor.CreateProperty afin d'afficher une propriété supplémentaire dans une grille de propriétés. Toutefois, 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.

Y a-t-il quelque chose que je pourrais manquer ou oublier? C’est un scénario basique et simple pour autant que je me souvienne.

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

Était-ce utile?

La solution

CreateProperty vous renvoie simplement 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 simplement besoin d'afficher des données supplémentaires dans DataGridView , l'option la plus simple consiste simplement à ajouter une colonne supplémentaire non liée à la grille.

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

  • ITypedList (si chaque instance de la liste peut avoir différentes colonnes) - voir cette réponse
  • TypeDescriptionProvider - vous permet d'ajouter des propriétés personnalisées par type (cela revient finalement à écrire un PropertyDescriptor , comme dans le premier exemple, mais avec des crochets différents)

Les règles complètes concernant la manière dont les métadonnées basées sur des listes sont récupérées sont décrites dans cette réponse

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