在.Net中,可以通过使用枚举来迭代
System.Enum.GetNames(typeof(MyEnum))
要么
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(); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。