2009-08-10 67 views
1

如果我有一个实现ICustomTypeDescriptor我可以覆盖的GetProperties类()方法完全与我的自定义的PropertyDescriptor更换类的所有属性。如何添加的PropertyDescriptor一类而不是覆盖它们?

但如果我想保持类的现有属性并添加附加属性的类?有没有办法返回一组自定义属性描述符来添加到现有的类属性?

例如,我希望用户能够定义在我的程序自定义属性将在属性网格显示。自定义属性的值将被存储在一个词典(字符串键,对象的值)集合,我要追加的PropertyDescriptor将读取和太从这个集合根据键值写入值。

我不认为IExtenderProvider将工作,因为它只会将一个类的属性添加到另一个类。但是我需要能够在运行时动态添加和删除属性。我可以有一个IExtenderProvider类也实现ICustomTypeDescriptor,使其增加的属性可以在运行时想通了?

回答

1

应该能够只需添加到当前的集合:

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