2013-04-02 20 views
5

Burada "tuhaf" bir soru Listeye dönüştürmek. İşte şu an düşündüğüm şeyi taslaklarım.Genel yöntem enum <T>

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; 
    } 
} 

Bunun mümkün olup olmadığını ve nasıl yapılacağını merakla.

+0

liste ne içermelidir? –

+0

@Habib: Bunun bir kopya olmadığına inanıyorum. Kullanıcı sadece "Enum1" veya "Enum2" parametresini iletebilir. – Musikero31

+0

@ LasseV.Karlsen: Mümkünse seçilen enumun anahtarı ve değeri. – Musikero31

cevap

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

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

Veya, almak istiyorsanız fantezi:

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: Genel yöntem yazmanın güzel yolu. –

+0

Aslında, bu benim problemimi çözdü. Teşekkür ederim! – 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;  

}

İlgili konular