文字列を列挙値に変換することについては、ここで多くの質問があります。一般的に、答えはこの質問の答えのように見えます:
StatusEnum MyStatus = (StatusEnum) Enum.Parse( typeof(StatusEnum), "Active", true );
これは完全に合理的な答えであり、呼び出しを単純化するメソッドを作成できますが、適切な列挙値の代わりにEnum.Parse()が返される理由の質問には答えません。object
なぜキャストする必要があるのStatusEnum
ですか?
編集:
基本的に、問題は、なぜこのような関数がEnumクラスの一部ではないのかということです。
public static T Parse<T>(string value) where T: struct
{
return (T)Enum.Parse(typeof (T), value);
}
この関数は完全に正常に機能し、期待どおりに機能します。 StatusEnum e = Enum.Parse<StatusEnum>("Active");
。