2009-09-18 46 views
1

嘿,夥計們宣佈。我有以下情況。篩選器屬性,他們在

我想用一個TypeDescriptor獲取某種類型的屬性。繼承層次結構中的類型深度可能會有所不同。我只想獲取類型本身聲明的屬性,而不是父類(基地)。問題是,當我叫TypeDescriptor.GetProperties(),它將返回的一切宣告了繼承層次可達對象。

我只看到了,我可以過濾通過屬性的輸出,但我不希望添加其他屬性的屬性在我的類型只是爲了這個。讓他們通過反射和不使用TypeDescriptor會做我想做的,但不是我的選擇,因爲有些屬性將被動態地添加到在某些時候的類型。

任何想法?如果問題不明確,我可以舉一個例子。

回答

7

您可以使用ComponentType屬性篩選器屬性:

var properties = from p in TypeDescriptor.GetProperties(x).Cast<PropertyDescriptor>() 
       where p.ComponentType == x.GetType() 
       select p; 
1

你就不能修改ICustomTypeDescriptor實施,以反映您所期望的行爲?