2009-08-10 65 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; 
    } 
相關問題