Legen Sie das benutzerdefinierte Typeconverter auf einem Grundstück zur Laufzeit aus dem Inneren eines benutzerdefinierten UITypeEditor
-
22-09-2019 - |
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).
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).