如何将PropertyDescriptors添加到类中而不是覆盖它们?

时间:2009-08-10 19:49:59

标签: propertygrid propertydescriptor iextenderprovider

如果我有一个实现 ICustomTypeDescriptor 的类,我可以覆盖 GetProperties()方法,用我的自定义 PropertyDescriptors <完全替换该类的所有属性/ strong>即可。

但是,如果我想保留该类的现有属性并将其他属性附加到该类,该怎么办?有没有办法返回一组添加到现有类属性的自定义属性描述符?

例如,我希望用户能够在我的程序中定义将显示在属性网格中的自定义属性。自定义属性的值将存储在字典(字符串键,对象值)集合中,并且我想附加 PropertyDescriptors ,它们也将读取和写入值这个集合基于关键值。

我认为 IExtenderProvider 不会起作用,因为它只会将一个类的属性添加到另一个类中。但我需要能够在运行时动态添加和删除属性。我是否可以使用 IExtenderProvider 类来实现 ICustomTypeDescriptor ,以便在运行时可以计算出它添加的属性?

1 个答案:

答案 0 :(得分:1)

应该只需添加到当前集合中:

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