Propriétés de filtrage renvoyées par TypeDescriptor.GetProperties () en fonction de la classe dans laquelle elles sont déclarées

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

Question

Hé les gars. J'ai la situation suivante.

Je souhaite utiliser un TypeDescriptor pour obtenir les propriétés d'un certain type. La profondeur du type dans la hiérarchie d'héritage peut varier. Je veux seulement obtenir les propriétés déclarées dans le type lui-même et non dans ses parents (base). Le problème est que lorsque j'appelle TypeDescriptor.GetProperties (), il renverrait tout ce qui a été déclaré dans la hiérarchie d'héritage jusqu'à Object.

J'ai seulement vu que je pouvais filtrer la sortie par attributs, mais je ne veux pas ajouter un autre attribut aux propriétés de mes types, juste pour cela. Les faire réfléchir et ne pas utiliser TypeDescriptor ferait ce que je veux, mais ce n'est pas une option pour moi, car certaines propriétés seront ajoutées dynamiquement au type à un moment donné.

Des idées? Si la question n’est pas claire, je pourrais donner un exemple.

Était-ce utile?

La solution

Vous pouvez filtrer les propriétés à l'aide de la propriété ComponentType :

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

Autres conseils

Ne pouvez-vous pas simplement modifier l'implémentation de ICustomTypeDescriptor afin de refléter votre comportement souhaité?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top