Domanda

Non è così semplice come dice il titolo, ma spero che tu capisca.

Si consideri questo scenario:

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

Successivamente, si inserisce un'istanza di MyButton in una griglia delle proprietà, espandere immobili MC e modificare SubProp2.

Da l'editor tipo per SubProp2, voglio entrare in possesso di un attributo applicato alla proprietà MC.

Guardando il contesto, PropertyDescriptor.ComponentType, si arriva al Tipo: MyClass. Se guardo gli attributi applicati a MyClass, però, restituisce solo gli attributi applicati direttamente a MyClass, e non l'attributo in più applicata alla proprietà MC.

sto lottando per tornare a MC in modo che posso leggere gli attributi non applicate. Chiunque tutte le idee?

ETA:

Ho risposto qui sotto:

È stato utile?

Soluzione 2

In realtà, in seguito al mio commento a Thomas, questo è possibile senza l'associazione tardiva. Ecco come:

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

Voila!

Altri suggerimenti

  

Se guardo l'attributi applicati a MyClass, però, restituisce solo gli attributi applicati direttamente a MyClass, e non l'attributo in più applicata alla proprietà MC.

L'attributo aggiunto alla proprietà MC non vengono "aggiunti" per gli attributi applicati alla classe MyClass ... attributi sono metadati statici, non avrete un attributo in più su MyClass solo perché una proprietà di tipo MyClass ha questo attributo. Non c'è alcuna relazione tra i due.

Non c'è modo per MyClass per recuperare gli attributi della proprietà MC, a meno che non li recupera direttamente dalla classe MyButton, attraverso la riflessione:

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

Ma non sarà in grado di recuperare quegli attributi che utilizzano TypeDescriptor, dal momento che può solo dare gli attributi definiti dal tipo, non sulle proprietà

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top