propriedades do filtro retornados por TypeDescriptor.GetProperties () dependendo da classe são declaradas em
-
22-07-2019 - |
Pergunta
Hey guys. Eu tenho a seguinte situação.
Eu quero usar um TypeDescriptor para obter as propriedades de um certo tipo. A profundidade do tipo na hierarquia de herança pode variar. Eu só quero obter as propriedades declaradas no próprio e não em seus pais (base) tipo. O problema é que quando eu chamo TypeDescriptor.GetProperties () iria devolver tudo declarou-se a hierarquia de herança até objeto.
Eu só vi que eu possa filtrar a saída por atributos, mas eu não quero adicionar outro atributo para as propriedades em meus tipos apenas para isso. Trazê-los através da reflexão e não usando TypeDescriptor faria o que eu quero, mas não é uma opção para mim, porque algumas das propriedades serão adicionados dinamicamente ao tipo em algum ponto.
Todas as idéias? Se a questão não é claro que eu poderia dar um exemplo.
Solução
Você pode filtrar as propriedades usando a propriedade ComponentType
:
var properties = from p in TypeDescriptor.GetProperties(x).Cast<PropertyDescriptor>()
where p.ComponentType == x.GetType()
select p;
Outras dicas
Você não pode apenas modificar a implementação de ICustomTypeDescriptor
para refletir o seu comportamento desejado?