Legen Sie das benutzerdefinierte Typeconverter auf einem Grundstück zur Laufzeit aus dem Inneren eines benutzerdefinierten UITypeEditor

StackOverflow https://stackoverflow.com/questions/2535647

Frage

Ich habe eine benutzerdefinierte UITypeEditor erstellt.

Kann ich möglicherweise Einsatz ein Attribut, das auch einen Typeconverter meine Eigenschaft legt von innen die UITypeEditor Klasse?

Ich habe folgendes versucht, aber nichts passiert, egal wie ich es drehen und wenden:

Attribute[] newAttributes = new Attribute[1];
newAttributes[0] = new TypeConverterAttribute(typeof(BooleanConverter));

Nun wird die oben genannten Bedürfnisse haben, die irgendwie mit ihm verbunden folgenden:

TypeDescriptor.AddAttributes(context.Instance.PROPERTYNAME, newAttributes);

... vor allem aber ich weiß nicht, wie man die betreffende Eigenschaft in allgemeiner Weise zu bekommen, und alle Codes versuche ich gerade nicht. Auch wenn ich versuche, die Typeconverter auf diese Weise global zuweisen, scheitert es. (Einstellung es als Attribut auf dem Grundstück selbst obwohl funktioniert nur, um auszuschließen, dass der Fehler in diesem Teil ist).

War es hilfreich?

Lösung

TypeDescriptor können Sie Attribute hinzufügen (zumindest, soweit System.ComponentModel betrifft) auf Typen und Objekte - aber nicht auf bestimmte Eigenschaften. Um das zu tun (in allgemeiner Weise würde TypeDescriptionProvider erfordern - jedoch darauf hingewiesen werden, dass dies keine triviale Sache zu implementieren ist, und Sie müssen schreiben alle:

  • der Anbieter selbst
  • ein ICustomTypeDescriptor
  • ein PropertyDescriptor für die Dinge, die Sie bearbeiten möchten

Es ist die PropertyDescriptor, die Sie erlauben würden, so zu tun, Sie zusätzliche Attribute hatten (oder über override Änderung mehr die Converter direkt, ohne mit Attributen Messing).

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