铸造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; } } 

现在,在客户端我想使用这样的代码(将我的stringfileContentMessageContent属性)

 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);