关于将字符串转换为枚举值有很多问题.一般来说,答案看起来像这个问题的答案:
StatusEnum MyStatus = (StatusEnum) Enum.Parse( typeof(StatusEnum), "Active", true );
Run Code Online (Sandbox Code Playgroud)
虽然这是一个非常合理的答案,并且您可以编写一个方法来简化调用,但它并没有回答为什么 Enum.Parse()返回一个object而不是相应的枚举值的问题.为什么我要把它投到StatusEnum?
编辑:
基本上,问题是为什么这样的函数不是Enum类的一部分?
public static T Parse<T>(string value) where T: struct
{
return (T)Enum.Parse(typeof (T), value);
}
Run Code Online (Sandbox Code Playgroud)
这个功能完美无缺,完全符合您的期望. StatusEnum e = Enum.Parse<StatusEnum>("Active");.
Ree*_*sey 10
这样做是因为
因此,Object它是唯一一种适用于任何类型的类型enum.
通过返回对象,API至少是可用的,即使需要强制转换.