通过Silverlight 4中的枚举进行迭代

时间:2011-02-15 21:37:46

标签: c# silverlight enums

  

可能重复:
  Iterating through an enumeration in Silverlight?

有没有办法使用C#迭代Silverlight中Enum中的所有值?

我知道WPF允许您使用System.Enum.GetType(Type)方法,但这在Silverlight中不可用。

谢谢, 塞特

2 个答案:

答案 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))