有没有办法使用C#迭代Silverlight中Enum中的所有值?
我知道WPF允许您使用System.Enum.GetType(Type)方法,但这在Silverlight中不可用。
谢谢, 塞特
答案 0 :(得分: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);
}
答案 1 :(得分: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))