Filtrar propiedades devueltas por TypeDescriptor.GetProperties () según la clase en la que se declaran

StackOverflow https://stackoverflow.com/questions/1443314

Pregunta

Hola chicos. Tengo la siguiente situación.

Quiero usar un TypeDescriptor para obtener las propiedades de cierto tipo. La profundidad del tipo en la jerarquía de herencia puede variar. Solo quiero obtener las propiedades declaradas en el tipo en sí y no en sus padres (base). El problema es que cuando llamo a TypeDescriptor.GetProperties () devolvería todo lo declarado en la jerarquía de herencia a Object.

Solo vi que puedo filtrar la salida por Atributos, pero no quiero agregar otro atributo a las propiedades en mis tipos solo por esto. Hacerlos pasar por la reflexión y no usar TypeDescriptor haría lo que quiero, pero no es una opción para mí, porque algunas de las propiedades se agregarán dinámicamente al tipo en algún momento.

¿Alguna idea? Si la pregunta no está clara, podría proporcionar un ejemplo.

¿Fue útil?

Solución

Puede filtrar las propiedades utilizando la propiedad ComponentType :

var properties = from p in TypeDescriptor.GetProperties(x).Cast<PropertyDescriptor>()
                 where p.ComponentType == x.GetType()
                 select p;

Otros consejos

¿No puede simplemente modificar la implementación de ICustomTypeDescriptor para reflejar su comportamiento deseado?

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