Frage

Ich versuche, ein umfassendes Verständnis davon zu bekommen, wie Sie verwenden ICustomTypeDescriptor, Typedescriptionprovider, Typeconverter und UITypeEditor zu ändern, wie ein Property Displays und Schnittstellen mit einem Objekt.

Kann mir jemand sagen, ob dies richtig ist, oder wenn ich verpasst keine wichtigen Konzepte oder Punkte? Ich bin wirklich nur versuchen, zu verstehen, warum und wann würden Sie jede Klasse.

ICustomTypeDescriptor

  • Die Implementierung dieser Schnittstelle in einer Klasse totaly die nativen Eigenschaften einer Klasse überschreibt und ersetzt sie durch die propertyDescriptors von ICustomTypeDescriptor.GetProperties zurückgegeben ()

Typedescriptionprovider

  • Auf den vorhandenen Eigenschaften einer Klasse
  • erweitern
  • A Typedescriptionprovider zu einer Klasse durch ein Typedescriptionprovider-Attribut angehängt wird,
  • Die GetTypeDescriptor () -Methode des Typedescriptionprovider gibt einen ICustomTypeDescriptor sein angehängt zu den bestehenden Eigenschaften des Typs.
  • Ein Property zeigt sowohl die Eigenschaften der Klasse durch Reflexion gefunden, und die Eigenschaften der Klasse durch die Typedescriptionprovider hinzugefügt

Typeconverter

  • Konvertiert zwischen den Typen
  • Im Hinblick auf eine PropetyGrid verwendet, um zwischen komplexen Typen und primitiven Typen zu konvertieren, die in der Eigenschaft Raster angezeigt / bearbeitet werden können.
  • Die GetStandard Werte Methode eines Typeconverter auch eine Liste der möglichen Werte zu zeigen, in dem Property verwendet werden können,

UITypeEditor

  • einen benutzerdefinierten Editor Definiert für eine Eigenschaft eines komplexen Typs manipulieren.
  • Verbunden mit einer Eigenschaft durch ein Attribut.

So ICustomTypeDescriptor eine Typbeschreibung Anbieter verwendet werden, um hinzuzufügen / ändern / ersetzen gesamte Eigenschaften von Objekten. Typeconverter und UITypeEditor sind auf die individuellen Eigenschaften angelegt und steuern, wie diese spezifischen Eigenschaften mit Schnittstelle sind.

War es hilfreich?

Lösung

Tweaks:

  • TypeDescriptionProvider

    • noch ersetzt Metadaten (nicht erweitert)
    • kann auch hinzugefügt werden TypeDescriptor.AddProvider
    • kann wie pro-Instanz als auch pro-Typ angewendet werden, die es ermöglichen, auf Listen anzuwenden, ohne ITypedList implementieren zu müssen
  • TypeConverter

    • für PropertyGrid, dies ist auch der Mechanismus erhalten Metadaten verwendet wird; beachten Sie, dass ExpandableObjectConverter einfach Delegierten TypeDescriptor.GetProperties, aber dies ist nicht immer der Fall
    • auch verantwortlich für die neu zu erstellen, unveränderliche Objekte (wie structs) mit Änderungen
  • UITypeEditor

    • auch verantwortlich für das Vorschaufeld in PropertyGrid Malerei

Zusätzlich:

  • IExtenderProvider - anhängt Eigenschaften; Dies kann sein, was Sie mit TypeDescriptionProvider immer verwirrt
  • ITypedList - im Großen und Ganzen der Zwilling von ICustomTypeDescriptor, aber für die Listen; kann durch die Verwendung von TypeDescriptionProvider und einem Nicht-Objekt-Indexer auf jedem IList, das heißt public T this[int index] {get;}
  • vermieden werden
  • IListSource - bietet indirection zwischen einer Datenquelle und die Daten; zum Beispiel implementiert eine DataTable IListSource, DefaultView zurückkehrt, wenn die angeforderte
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top