在Silverlight中定义Enum的扩展方法

Mik*_*e_G 3 c# silverlight

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

public static IEnumerable<Enum> GetValues(this Enum e)
Run Code Online (Sandbox Code Playgroud)

但它没有出现在intellisense中,所以我知道我错了.有什么指针吗?

Mik*_*e_G 5

我想通过在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;
   }
Run Code Online (Sandbox Code Playgroud)