TypeDescriptor.CreateProperty nicht fügen eine Eigenschaft
-
05-07-2019 - |
Frage
Ich versuche, eine Eigenschaft auf eine Art eine zusätzliche Eigenschaft in einem Eigenschaftenraster angezeigt werden, aber diese neue Eigenschaft ist und nicht hinzugefügt mit TypeDescriptor.CreateProperty, um hinzuzufügen, wenn ich TypeDescriptor.GetProperties auf diese Art zu untersuchen, die Eigenschaften aufrufen dieses Objekt existiert nicht.
Es gibt etwas, das ich könnte fehlen oder mit Blick auf? Dies ist ein einfaches und einfaches Szenario, soweit ich mich erinnere.
Hier ist der Aufruf: TypeDescriptor.CreateProperty (typeof (MovieMenuItem), "ExternalMediaLocation", typeof (string), null);
Lösung
CreateProperty
gibt Ihnen gerade eine Reflexion basierte PropertyDescriptor
für die in Rede stehenden Art (es ist nicht AddProperty
, zum Beispiel). Was ist das Szenario hier? Wenn Sie nur zusätzliche Daten in DataGridView
angezeigt werden müssen, ist die einfachste Möglichkeit ist, einfach eine zusätzliche ungebundene Spalte zu dem Raster hinzuzufügen.
Sie können Typen zur Laufzeit verlängern, sondern auch für Listen, die Sie haben zwei Möglichkeiten:
-
ITypedList
(wenn jede Instanz der Liste können verschiedene Spalten) - siehe diese Antwort -
TypeDescriptionProvider
- können Sie benutzerdefinierte Eigenschaften pro-Typ hinzufügen (schließlich läuft darauf hinaus, das Schreiben einesPropertyDescriptor
, genau wie das erste Beispiel - aber verschiedene Haken)
Die vollständigen Regeln, wie listenbasierte Metadaten abgerufen werden in diese Antwort