Frage

Es ist nicht ganz so einfach, wie der Titel schon sagt, aber ich hoffe, Sie verstehen.

Betrachten Sie dieses Szenario:

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

Als nächstes habe ich eine Instanz von MyButton in ein Eigenschaftenraster, erweitern Eigenschaft MC und bearbeiten SubProp2.

Vom Typ-Editor für SubProp2, will ich halten, das Attribut auf Eigenschaft MC angelegt bekommen.

im Kontext der Suche, PropertyDescriptor.ComponentType, kommen wir zu Typ: MyClass. Wenn ich an den Attributen aussehen MyClass angewendet, aber es wird nur die Attribute zurückgeben die direkt auf MyClass, und nicht das zusätzliche Attribut auf das Objekt angewendet MC.

Ich bin zu kämpfen zurück zu MC zu bekommen, so dass ich die Attribute dort angewandt lesen kann. Wer irgendwelche Ideen?

ETA:

Ich habe geantwortet hier ein:

War es hilfreich?

Lösung 2

Eigentlich weiter zu meinem Kommentar zu Thomas, ist dies möglich, ohne die späte Bindung. Hier ist, wie:

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

Voila!

Andere Tipps

  

Wenn ich mir die Attribute MyClass angewendet, aber es wird nur kehren die Attribute direkt auf MyClass angewendet und nicht das zusätzliche Attribut angewendet auf die Eigenschaft MC.

Das Attribut zum MC Eigenschaft hinzugefügt werden, nicht „hinzugefügt“, um die Attribute der MyClass Klasse angewendet ... Attribute sind statische Metadaten, werden Sie nicht ein zusätzliches Attribut auf MyClass haben, nur weil eine Eigenschaft des Typs MyClass dies hat Attribut. Es gibt keine Beziehung zwischen den beiden.

Es gibt keine Möglichkeit für MyClass die Attribute des MC Eigenschaft abzurufen, wenn man sie nicht direkt von der MyButton Klasse abrufen, durch Reflexion:

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

Aber Sie werden diese Attribute abrufen können, zu verwenden TypeDescriptor nicht, da es nur die Attribute von der Art definiert geben kann, nicht auf die Eigenschaften

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top