TypeDescriptor.CreateProperty no agrega una propiedad
-
05-07-2019 - |
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);
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 unPropertyDescriptor
, 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