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);

War es hilfreich?

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 eines PropertyDescriptor, genau wie das erste Beispiel - aber verschiedene Haken)

Die vollständigen Regeln, wie listenbasierte Metadaten abgerufen werden in diese Antwort

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top