以下のスタブで、(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) がスローされます。