2011-02-15 77 views

回答

4
public static IEnumerable<T> GetEnumValues<T>() 
    { 
     return typeof(T) 
      .GetFields() 
      .Where(x => x.IsLiteral) 
      .Select(field => (T)field.GetValue(null)); 
    } 

使用

 foreach (var bindingFlag in GetEnumValues<BindingFlags>()) 
     { 
      Debug.WriteLine(bindingFlag); 
     } 
0

试试这个:

public static List<T> GetList<T>(Type enumType) 
    { 
     List<T> output = new List<T>(); 

     var fields = from field in enumType.GetFields() 
        where field.IsLiteral 
        select field; 


     foreach (FieldInfo field in fields) 
     { 
      object value = field.GetValue(enumType); 
      output.Add((T) value); 
     } 

     return output; 

    } 

这样称呼它:

List<MyEnum> myList = GetList<MyEnum>(typeof(MyEnum))