質問

これはタイトルが言うように非常に簡単ではないようだが、私はあなたが理解してほしい。

このシナリオを検討します:

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

次に、私は財産MCと編集SubProp2を展開し、プロパティグリッドにMyButtonというのインスタンスを配置します。

SubProp2の型エディタから、私はプロパティMCに適用される属性のホールドを取得したい。

文脈を見ると、PropertyDescriptor.ComponentTypeは、我々はタイプに到着:MyClassのを。 属性の私見てても、MyClassのに適用される場合、それは属性のみが返されますMyClassのに直接適用され、余分な属性がプロパティMCには適用されません。

私は属性が存在適用読むことができるように戻ってMCに取得するために苦労しています。 誰でも任意のアイデア?

ETAます:

私は以下のことに答えてきました。

役に立ちましたか?

解決 2

実際には、さらにトーマスに私のコメントに、これは後半に結合することなく可能です。ここでの方法:

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

出来上がり!

他のヒント

  

私は属性を見れば、それだけで属性を返すでしょうが、MyClassのに適用されるには、MyClassのに直接適用され、余分な属性がプロパティMCには適用されません。

MCプロパティに追加属性は属性に「追加」されていないが、MyClassクラスに適用されるタイプのMyClassの性質がこれを持っているという理由だけで...属性は、静的なメタデータです、あなたはMyClassに余分な属性を持っていません。属性。 2の間には関係がありません。

は、反射によって、MyButtonクラスから直接それらを取得しない限り、MyClassのは、MCプロパティの属性を取得するための方法はありません。

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

しかし、あなたはそれだけではないの性質上、あなたのタイプに定義された属性を与えることができるので、TypeDescriptorを使用してこれらの属性を取得することができません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top