LINQ et Réflexion pour obtenir les valeurs de System.Drawing.Color

LINQ... l'un de mes sujets préférés... Plus je l'utilise, à toutes les sauces, et plus je trouve cette technologie indispensable. Mais foin de propagande, voici encore un exemple qui prouve à quel point LINQ peut servir à tout, facilement.

Le but du jeu : récupérer la définition des couleurs de System.Drawing.Color, en faire un tableau trié par ordre alphabétique.

A la "main" je vous souhaite bien du plaisir... Avec LINQ cela donne la chose suivante :

namespace LinqColor
{
  class Program
  {
     static void Main(string[] args)
    {
       var color_type = typeof(System.Drawing.Color);
       var color_properties = from prop in color_type.GetProperties()
                                     where prop.PropertyType == color_type
                                     orderby prop.Name
                                     select prop;
       
       foreach (var color_property in color_properties)
       {
           var cur_color = (System.Drawing.Color) color_property.GetValue(null, null);
           uint rgb_int = (uint) cur_color.ToArgb() & (0x00ffffff);
           Console.WriteLine(" {0,-20} = ({1,-3},{2,-3},{3,-3}) = 0x{4:X00000000}",
           color_property.Name,
           cur_color.R, cur_color.G, cur_color.B,rgb_int);
       }
    }
  }
}

La sortie écran (console) donne la chose suivante :

Le projet VS 2008 pour les fénéants du clavier : LinqColor.zip (5,43 kb)

C'est pas merveilleux LINQ ?

Bien sûr que si... Alors Stay Tuned !


Tags: Categories: LINQ

Mon 04 Aug 2008 15:51 2 Comments
Actions: E-mail | Permalink | Comment RSSRSS comment feed

Comments

August 5. 2008 02:14

Sylvain

Bien vu !
La réflexion + Linq... !

Sylvain

August 5. 2008 07:31

Olivier

C'est vraiment très cool LINQ, au quotidien LINQ to Object ça change la façon de programmer. Je suis en train de terminer un soft que je différais depuis longtemps : un chercheur de fichiers dupliqués. C'est pas très compliqué, mais dès que tu attaques l'implémentation il te faut faire des tris, des sélections, des groupages, etc. Et c'est tellement rébarbatif que j'ai toujours repoussé. Là je l'ai créé en utilisant LINQ, ça tient en une poignées de lignes de code, ça marche du premier coup, et il n'y a que du code "intelligent", tout le code chiant (tris, sélections, groupages...)est à chaque fois remplacé par une petite requête LINQ.
C'est un vrai bonheur LINQ to Object. Je ne le dirais jamais assez Smile
(le petit soft en question sera mis en download gratuit bientôt, avec le code source je pense).

Olivier

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading