Pregunta

No es tan simple como dice el título, pero espero que usted entiende.

Considere este escenario:

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

A continuación, me puso una instancia de MiBoton en una cuadrícula de propiedades, expanda la propiedad MC y editar SubProp2.

Desde el editor de tipo para SubProp2, quiero controlar la atributo aplicado a la propiedad MC.

Mirando el contexto, PropertyDescriptor.ComponentType, llegamos a Tipo: MiClase. Si miro a los atributos aplicados a MiClase, sin embargo, sólo devolverá los atributos aplicados directamente a MiClase, y no el atributo adicional aplicada a la propiedad MC.

yo estoy ahí luchando para volver a MC para que pueda leer los atributos aplicados. Cualquier persona alguna idea?

ETA:

He respondido a continuación:

¿Fue útil?

Solución 2

En realidad, más que mi comentario a Thomas, esto es posible sin fines de unión. He aquí cómo:

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

Voila!

Otros consejos

  

Si miro a los atributos aplicados a MiClase, sin embargo, será sólo devuelven los atributos aplicados directamente a MiClase, y no el atributo adicional aplicada a la propiedad MC.

El atributo añadido a la propiedad MC no están "agregado" a los atributos aplica a la clase MyClass ... atributos son metadatos estáticos, no tendrá un atributo extra en MyClass sólo porque una propiedad de tipo MyClass tiene esta atributo. No hay relación entre los dos.

No hay manera de MiClase para recuperar los atributos de la propiedad MC, a menos que se recupere directamente de la clase MyButton, a través de la reflexión:

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

Sin embargo, usted no será capaz de recuperar esos atributos utilizando TypeDescriptor, ya que sólo le puede dar los atributos definidos en el tipo, no en las propiedades

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top