Proprietà del filtro restituite da TypeDescriptor.GetProperties () a seconda della classe in cui sono dichiarate

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

Domanda

Ciao ragazzi. Ho la seguente situazione.

Voglio usare un TypeDescriptor per ottenere le proprietà di un certo tipo. La profondità del tipo nella gerarchia ereditaria può variare. Voglio solo ottenere le proprietà dichiarate nel tipo stesso e non nei suoi genitori (base). Il problema è che quando chiamo TypeDescriptor.GetProperties () restituisce tutto a oggetti dichiarati nella gerarchia ereditaria fino a Object.

Ho visto solo che posso filtrare l'output per Attributi, ma non voglio aggiungere un altro attributo alle proprietà nei miei tipi solo per questo. Passarli attraverso la riflessione e non usare TypeDescriptor farebbe quello che voglio, ma non è un'opzione per me, perché ad un certo punto alcune proprietà verranno aggiunte dinamicamente al tipo.

Qualche idea? Se la domanda non è chiara, potrei fornire un esempio.

È stato utile?

Soluzione

Puoi filtrare le proprietà usando la proprietà ComponentType :

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

Altri suggerimenti

Non puoi semplicemente modificare l'implementazione di ICustomTypeDescriptor per riflettere il comportamento desiderato?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top