3 votes

Simplifier la boucle pour obtenir les attributs d'une classe

J'ai deux boucles foreach pour obtenir tous les attributs, linéairement, d'une de mes classes.

foreach (PropertyInfo property in GetType().GetProperties())
{
  foreach (Attribute attribute in property.GetCustomAttributes(true))
  {
  }
}

Comment puis-je simplifier ces deux boucles en une seule ou en une opération linq pour obtenir les attributs de classe ?

6voto

itsme86 Points 6733

Vous pouvez compter sur SelectMany()

var attributes = GetType().GetProperties()
                     .SelectMany(p => p.GetCustomAttributes(true));

foreach (var attribute in attributes)
{
    // Code goes here
}

4voto

octavioccl Points 5944

Ou en utilisant la notation des requêtes :

var attributes=from p in yourObject.GetType().GetProperties()
               from a in p.GetCustomAttributes(true)
               select a;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X