2010-01-20 85 views
0

這不像標題所說的那麼簡單,但我希望你能理解。從UITypeEditor中,檢索應用於屬性父項的屬性.net

考慮這種情況:

Class MyClass 

    Property SubProp1 
    End Property 

    -TypeEditor(whatever)- 
    Property SubProp2 
    End Property 

End Class 

Class MyButton 
    Inherits Button 

    -MyCustomAttribute- 
    Property MC as MyClass 
    End Property 

End Class 

接下來,我把myButton的實例爲屬性網格,擴大財產MC和編輯SubProp2。

從SubProp2的類型編輯器中,我想獲得應用於屬性MC的屬性。

查看上下文,PropertyDescriptor.ComponentType,我們到達類型:MyClass。 但是,如果我查看應用於MyClass的屬性,它將只返回直接應用於MyClass的屬性,而不會返回應用於屬性MC的額外屬性。

我很努力地回到MC,以便我可以閱讀在那裏應用的屬性。 任何任何想法?

ETA:

我下面的答案是:

回答

0

實際上,除了我對托馬斯的評論,這是可能的,沒有後期綁定。方法如下:

DirectCast(context, GridItem).Parent.PropertyDescriptor.Attributes. 

瞧!

1

如果我看着應用於MyClass的屬性,雖然,它只會返回直接應用到MyClass的屬性,而不是額外的屬性應用於屬性MC。

屬性添加到MC財產不是「添加」,以適用於MyClass類的屬性...屬性是靜態的元數據,你不會有額外的屬性上MyClass只是因爲類型的屬性MyClass具有此屬性。這兩者之間沒有任何關係。

有沒有辦法爲MyClass的檢索MC屬性的特性,除非你直接從MyButton類檢索它們,通過反思:

Dim prop As PropertyInfo = GetType(MyButton).GetProperty("MC") 
Dim attributes As Attribute() = Attribute.GetCustomAttributes(prop) 

但你將無法使用檢索這些屬性TypeDescriptor,因爲它只能給你的屬性上定義的屬性,而不是屬性

+0

堅果,這就是我雖然。我設法用後期綁定來實現,使用上下文是一個GridEntry的事實,但我懷疑當我必須這樣做時,一些XFactoring是必需的。 – Jules 2010-01-21 11:01:21