Pregunta

Estoy intentando agregar una propiedad a un tipo usando TypeDescriptor.CreateProperty para mostrar una propiedad adicional en una cuadrícula de propiedades, sin embargo, esta nueva propiedad no se agrega y cuando llamo a TypeDescriptor.GetProperties en ese tipo para inspeccionar las propiedades , esta propiedad no existe.

¿Hay algo que pueda faltar o pasar por alto? Este es un escenario básico y simple por lo que recuerdo.

Aquí está la llamada: TypeDescriptor.CreateProperty (typeof (MovieMenuItem), " ExternalMediaLocation " ;, typeof (string), null);

¿Fue útil?

Solución

CreateProperty solo te devuelve un PropertyDescriptor basado en la reflexión para el tipo en cuestión (no es AddProperty , por ejemplo). ¿Cuál es el escenario aquí? Si solo necesita mostrar datos adicionales en DataGridView , la opción más sencilla es simplemente agregar una columna adicional no unida a la cuadrícula.

Usted puede extender tipos en tiempo de ejecución, pero para las listas tiene dos opciones principales:

  • ITypedList (si cada instancia de la lista puede tener diferentes columnas) - vea esta respuesta
  • TypeDescriptionProvider : le permite agregar propiedades personalizadas por tipo (en última instancia, se reduce a escribir un PropertyDescriptor , como el primer ejemplo, pero con distintos ganchos)

Las reglas completas de cómo se obtienen los metadatos basados ??en listas se encuentran en esta respuesta

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