TypeDescriptor.CreateProperty non aggiunge una proprietà
-
05-07-2019 - |
Domanda
Sto cercando di aggiungere una proprietà a un tipo utilizzando TypeDescriptor.CreateProperty per visualizzare una proprietà aggiuntiva in una griglia di proprietà, tuttavia questa nuova proprietà non viene aggiunta e quando chiamo TypeDescriptor.GetProperties su quel tipo per ispezionare le proprietà , questa proprietà non esiste.
C'è qualcosa che potrei mancare o trascurare? Questo è uno scenario semplice e di base per quanto mi ricordo.
Ecco la chiamata: TypeDescriptor.CreateProperty (typeof (MovieMenuItem), " ExternalMediaLocation " ;, typeof (string), null);
Soluzione
CreateProperty
ti restituisce un PropertyDescriptor
basato sulla riflessione per il tipo in questione (non è AddProperty
, ad esempio). Qual è lo scenario qui? Se hai solo bisogno di visualizzare dati extra in DataGridView
, l'opzione più semplice è semplicemente aggiungere una colonna non associata extra alla griglia.
Puoi puoi estendere i tipi in fase di esecuzione, ma per gli elenchi hai due opzioni principali:
-
ITypedList
(se ogni istanza dell'elenco può avere colonne diverse) - vedi questa risposta -
TypeDescriptionProvider
: consente di aggiungere proprietà personalizzate per tipo (alla fine si riduce a scrivere unPropertyDescriptor
, proprio come il primo esempio - ma diversi hook)
Le regole complete su come recuperare i metadati basati su elenchi sono in questa risposta