2013-04-02 18 views
5

tu jest „dziwne” pytanie:sposób generalny do konwersji enum do listy <T>

Czy to możliwe, aby utworzyć metodę gdzie będzie przekształcić cokolwiek enum do listy. Oto mój szkic tego, o czym obecnie myślę.

public class EnumTypes 
{ 
    public enum Enum1 
    { 
     Enum1_Choice1 = 1, 
     Enum1_Choice2 = 2 
    } 

    public enum Enum2 
    { 
     Enum2_Choice1 = 1, 
     Enum2_Choice2 = 2 
    } 

    public List<string> ExportEnumToList(<enum choice> enumName) 
    { 
     List<string> enumList = new List<string>(); 
     //TODO: Do something here which I don't know how to do it. 
     return enumList; 
    } 
} 

Ciekawe, czy to możliwe i jak to zrobić.

+0

Co powinien zawierać listę? –

+0

@Habib: Wierzę, że to nie jest duplikat. Ponieważ użytkownik może po prostu przekazać jako parametr "Enum1" lub "Enum2". – Musikero31

+0

@ LasseV.Karlsen: Jeśli to możliwe, wybierz klucz i wartość wyliczenia. – Musikero31

Odpowiedz

11
Enum.GetNames(typeof(EnumType)).ToList() 

http://msdn.microsoft.com/en-us/library/system.enum.getnames.aspx

Albo, jeśli chcesz uzyskać fantazyjne:

public static List<string> GetEnumList<T>() 
    { 
     // validate that T is in fact an enum 
     if (!typeof(T).IsEnum) 
     { 
      throw new InvalidOperationException(); 
     } 

     return Enum.GetNames(typeof(T)).ToList(); 
    } 

    // usage: 
    var list = GetEnumList<EnumType>(); 
+0

+1: Miły sposób pisania ogólnej metody. –

+0

Właściwie to rozwiązało mój problem. Dziękuję Ci! – Musikero31

0
public List<string> ExportEnumToList(<enum choice> enumName) { 
List<string> enumList = new List<string>(); 
//TODO: Do something here which I don't know how to do it. 
foreach (YourEnum item in Enum.GetValues(typeof(YourEnum))){ 
    enumList.Add(item); 
} 
return enumList;  

}

Powiązane problemy