2010-02-10 2 views
3

Silverlight ne contient pas le GetValues pour les énumérations, alors j'ai pensé que j'écrirais une méthode d'extension pour couvrir mes besoins dans mon projet. La seule chose est, je ne sais pas à quoi devrait ressembler la signature de la méthode d'extension. Im penser quelque chose dans le sens de:Définition d'une méthode d'extension pour Enum dans Silverlight

public static IEnumerable<Enum> GetValues(this Enum e) 

Mais ce n'est pas apparaître dans intellisense, donc je sais que je me trompe. Des pointeurs?

Répondre

5

Je pense que je pensais que ce en combinant un peu reflection avec et creuser dans le réflecteur:

public static Array GetValues(this Enum enumType) 
    { 
     Type type = enumType.GetType(); 

     FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Static); 

     Array array = Array.CreateInstance(type, fields.Length); 

     for (int i = 0; i < fields.Length; i++) 
     { 
      var obj = fields[i].GetValue(null); 
      array.SetValue(obj, i); 
     } 

     return array; 
    } 
Questions connexes