2009-08-10 11 views
1

Wenn ich eine Klasse, die implementiert ICustomTypeDescriptor ich die GetProperties außer Kraft setzen kann() Methode, um vollständig alle Eigenschaften der Klasse ersetzen mit meiner benutzerdefinierten propertyDescriptors.Wie füge ich PropertyDescriptors zu einer Klasse hinzu, anstatt sie zu überschreiben?

Aber was, wenn ich die vorhandenen Eigenschaften der Klasse beibehalten und zusätzliche Eigenschaften an die Klasse anhängen möchte? Gibt es eine Möglichkeit, eine Reihe von benutzerdefinierten Eigenschaftsdeskriptoren zurückzugeben, die zu den vorhandenen Klasseneigenschaften hinzugefügt werden?

Zum Beispiel möchte ich, dass der Benutzer benutzerdefinierte Eigenschaften in meinem Programm definieren kann, die in einem Eigenschaftenraster angezeigt werden. Die Werte der benutzerdefinierten Eigenschaften werden in einem Dictionary (Zeichenfolgenschlüssel, Objektwert) Auflistung gespeichert, und ich möchte PropertyDescriptors anhängen, die Werte lesen und schreiben und aus dieser Auflistung basierend auf den Schlüsselwerten.

Ich glaube nicht, IExtenderProvider würde funktionieren, weil es nur die Eigenschaften einer Klasse zu einem anderen hinzufügt. Aber ich muss in der Lage sein, die Eigenschaften zur Laufzeit dynamisch hinzuzufügen und zu entfernen. Kann ich eine IExtenderProvider Klasse haben, die auch ICustomTypeDescriptor implementiert, so dass Eigenschaften, die hinzugefügt werden, zur Laufzeit herausgefunden werden können?

Antwort

1

Sollte auf der aktuellen Kollektion indem Sie gerade hinzufügen können:

public override PropertyDescriptorCollection GetProperties(Attribute[] attributes) 
    { 
     PropertyDescriptorCollection cols = base.GetProperties(attributes); 
     cols.Add(); // Add your custom property descriptor here 
     return cols; 
    } 
Verwandte Themen