铸造string来枚举
我正在阅读文件内容,并采取像这样的确切位置的string
string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);
输出将始终为“ Ok
或“ Err
另一方面,我有这样的ContentEnum
MyObject
public class MyObject { public enum ContentEnum { Ok = 1, Err = 2 }; public ContentEnum Content { get; set; } }
现在,在客户端我想使用这样的代码(将我的stringfileContentMessage
为Content
属性)
string fileContentMessage = File.ReadAllText(filename).Substring(411, 3); MyObject myObj = new MyObject () { Content = /// ///, };
使用Enum.Parse()
。
var content = (ContentEnum)Enum.Parse(typeof(ContentEnum), fileContentMessage);
看看使用类似的东西
Enum.TryParse
将一个或多个枚举常量的名称或数值的string表示forms转换为等效的枚举对象。 参数指定操作是否区分大小写。 返回值指示转换是否成功。
要么
Enum.Parse
将一个或多个枚举常量的名称或数值的string表示forms转换为等效的枚举对象。
作为一个额外的,你可以采取已经提供的Enum.Parse
答案,并把它们放在一个辅助类中的一个易于使用的静态方法。
public static T ParseEnum<T>(string value) { return (T)Enum.Parse(typeof(T), value, ignoreCase: true); }
像这样使用它:
{ Content = ParseEnum<ContentEnum>(fileContentMessage); };
特别有用的,如果你有很多(不同的)枚举来parsing。
.NET 4.0+有一个通用的Enum.TryParse
ContentEnum content; Enum.TryParse(fileContentMessage, out content);