1

如果我有一个实现ICustomTypeDescriptor的类,我可以重写GetProperties()方法,用我的自定义PropertyDescriptors完全替换该类的所有属性。

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

例如,我希望用户能够在我的程序中定义将显示在属性网格中的自定义属性。自定义属性的值将存储在Dictionary(string key, object value)集合中,我想附加PropertyDescriptors,它们也将根据键值从该集合中读取和写入值。

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

4

1 回答 1

1

应该能够通过添加到当前集合:

    public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
    {
        PropertyDescriptorCollection cols = base.GetProperties(attributes);
        cols.Add(); // Add your custom property descriptor here
        return cols;
    }
于 2009-08-10T20:21:11.220 回答