关于将字符串转换为枚举值的问题很多。通常,答案看起来类似于this question的答案:
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");
。 最佳答案
这样做是因为
因此,
Object
是唯一适用于任何enum
类型的类型。通过返回对象,即使需要强制转换,API也至少具有功能。