Question

Il est pas tout à fait aussi simple que le titre dit, mais je l'espère, vous comprenez.

Considérons ce scénario:

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

Ensuite, je mets une instance de MyButton dans une grille de propriétés, développez la propriété MC et modifier SubProp2.

Dans l'éditeur de type pour SubProp2, je veux saisir l'attribut appliqué à la propriété MC.

En regardant le contexte, PropertyDescriptor.ComponentType, nous arrivons à Type: MyClass. Si je regarde les attributs appliqués à MyClass, cependant, il ne retourne que les attributs appliqués directement à MyClass, et non l'attribut supplémentaire appliqué à la propriété MC.

Je me bats pour revenir à MC afin que je puisse lire les attributs qui y sont appliquées. Quelqu'un at-il des idées?

ETA:

J'ai répondu ci-dessous:

Était-ce utile?

La solution 2

En fait, plus à mon commentaire à Thomas, cela est possible sans la liaison tardive. Voici comment:

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

Voila!

Autres conseils

  

Si je regarde les attributs appliqués à MyClass, cependant, il ne retourne que les attributs appliqués directement à MyClass, et non l'attribut supplémentaire appliqué à la propriété MC.

L'attribut ajouté à la propriété MC ne sont pas « ajoutés » aux attributs appliqués aux ... attributs classe MyClass sont des métadonnées statiques, vous ne serez pas un attribut supplémentaire sur MyClass juste parce que une propriété de type MyClass a cette attribut. Il n'y a pas relation entre les deux.

Il n'y a aucun moyen pour MyClass de récupérer les attributs de la propriété MC, à moins que vous les récupérer directement à partir de la classe MyButton, par la réflexion:

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

Mais vous ne serez pas en mesure de récupérer ces attributs à l'aide TypeDescriptor, car il ne peut vous donner les attributs définis sur le type, non pas sur les propriétés

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top