在下面的存根中,如何将 (MyEnum) 作为参数传入,以便可以将此过程与任何枚举一起使用?
public static Enum Proc(this Enum e)
{
Int32 i = (Int32)(MyEnum)e;
...
这是我想出的可行的解决方案:
public static Enum Next(this Enum e, Type eT)
{
Int32 i = (Int32)(Object)e;
return (Enum)Enum.Parse(eT, Enum.GetName(eT, Enum.GetName(eT, ++i) == null? i = 0 : i));
}
这个解决方案并不理想,因为我必须这样做才能获得下一个值:
MyEnum e = (MyEnum)e.Next(typeof(MyEnum));
我宁愿做
MyEnum e = e.Next(typeof(MyEnum));
甚至更好:
MyEnum e = e.Next();
任何能提供简单解决方案的人都能明白这一点。
此外,我上面编写的代码在 LinqPad 中运行良好,但只能在 WP7 中编译,然后在运行时抛出异常(InvalidProgramException)。