在 Silverlight 中迭代枚举?

2024-01-15

在 .Net 中,可以使用以下方式迭代枚举

System.Enum.GetNames(typeof(MyEnum)) 

or

System.Enum.GetValues(typeof(MyEnum))

然而,在 Silverlight 3 中,未定义 Enum.GetNames 和 Enum.GetValues。有谁知道替代方案吗?


或者可能使用 linq 进行强类型化,如下所示:

    public static T[] GetEnumValues<T>()
    {
        var type = typeof(T);
        if (!type.IsEnum)
            throw new ArgumentException("Type '" + type.Name + "' is not an enum");

        return (
          from field in type.GetFields(BindingFlags.Public | BindingFlags.Static)
          where field.IsLiteral
          select (T)field.GetValue(null)
        ).ToArray();
    }

    public static string[] GetEnumStrings<T>()
    {
        var type = typeof(T);
        if (!type.IsEnum)
            throw new ArgumentException("Type '" + type.Name + "' is not an enum");

        return (
          from field in type.GetFields(BindingFlags.Public | BindingFlags.Static)
          where field.IsLiteral
          select field.Name
        ).ToArray();
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Silverlight 中迭代枚举? 的相关文章

随机推荐