Frage

Wenn ich eine Klasse, die implementiert ICustomTypeDescriptor Ich kann überschreibt den GetProperties () Methode, um vollständig alle Eigenschaften der Klasse zu ersetzen mit meinem benutzerdefinierten propertyDescriptors .

Aber was ist, wenn ich die vorhandenen Eigenschaften der Klasse halten wollen und zusätzliche Eigenschaften der Klasse anhängen? Gibt es eine Möglichkeit, eine Reihe von benutzerdefinierten Eigenschaftendeskriptoren zurückzukehren, die zu den vorhandenen Klasse Eigenschaften hinzugefügt werden?

Zum Beispiel möchte ich den Benutzer in die Lage seine benutzerdefinierten Eigenschaften in meinem Programm zu definieren, die in einem Eigenschaftenraster angezeigt werden. Die Werte der benutzerdefinierten Eigenschaften werden in einem Wörterbuch (string key, Objektwert) gespeichert werden Sammlung, und ich möchte anfügen propertyDescriptors , die Werte lesen und schreiben und aus diese Sammlung basiert auf den Schlüsselwerten.

Ich glaube nicht, IExtenderProvider funktionieren würde, weil es nur die Eigenschaften von einer Klasse zur anderen fügt. Aber ich muss in der Lage sein, die Eigenschaften zur Laufzeit dynamisch hinzufügen und entfernen. Kann ich eine haben IExtenderProvider Klasse, die auch Geräte ICustomTypeDescriptor , so dass Eigenschaften fügt es zur Laufzeit herausgefunden werden kann?

War es hilfreich?

Lösung

Sollte in der Lage sein, indem nur die aktuellen Kollektion hinzufügen:

    public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
    {
        PropertyDescriptorCollection cols = base.GetProperties(attributes);
        cols.Add(); // Add your custom property descriptor here
        return cols;
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top