c# - 在 Silverlight 中为枚举定义扩展方法

标签 c# silverlight

Silverlight 缺少 GetValues对于枚举,所以我想我会写一个扩展方法来满足我在项目中的需求。唯一的问题是,我不确定扩展方法的签名应该是什么样子。我在想一些事情:

public static IEnumerable<Enum> GetValues(this Enum e)

但它没有出现在智能感知中,所以我知道我错了。有什么指点吗?

最佳答案

我想我是通过结合一点点 reflection 来解决这个问题的使用并挖掘 Reflector:

public static Array GetValues(this Enum enumType)
   {
       Type type = enumType.GetType();

       FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Static);

       Array array = Array.CreateInstance(type, fields.Length);

       for (int i = 0; i < fields.Length; i++)
       {
           var obj = fields[i].GetValue(null);
           array.SetValue(obj, i);
       }

       return array;
   }

关于c# - 在 Silverlight 中为枚举定义扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2238334/

相关文章:

c# - 10,000 后递归加速

c# - IDE 下划线自定义属性

c# - Caliburn.Micro - 是否可以验证基于约定的绑定(bind)的异常?

wpf - 嵌入在 ContentControl 中的交互触发器

c# - 将 Silverlight MVVM 与 Prism/Unity 结合使用,并且需要检测 View 何时关闭

c# - 在 Asp.net MVC 中出现类似 "Object reference is not set to Reference of the Object"的错误

c# - 创建一个成功创建到单个应用程序的 WH_SHELL Hook 的 C# 项目

c# - 编写一个简单的工作流系统

Silverlight 工具包 - 带主题的 ChildWindow

c# - 在 Windows Phone 7 中创建一个简单的测验应用程序