75

我正在读取文件内容并在这样的确切位置获取字符串

 string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);

输出将始终是OkErr

另一方面,我有MyObject这样ContentEnum

public class MyObject

    {
      public enum ContentEnum { Ok = 1, Err = 2 };        
      public ContentEnum Content { get; set; }
    }

现在,在客户端我想使用这样的代码(将我的字符串fileContentMessage转换为Content属性)

string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);

    MyObject myObj = new MyObject ()
    {
       Content = /// ///,
    };
4

4 回答 4

174

使用Enum.Parse().

var content = (ContentEnum)Enum.Parse(typeof(ContentEnum), fileContentMessage);
于 2012-12-20T10:40:14.650 回答
26

另外,您可以获取Enum.Parse已经提供的答案并将它们放在帮助程序类中易于使用的静态方法中。

public static T ParseEnum<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value, ignoreCase: true);
}

并像这样使用它:

{
   Content = ParseEnum<ContentEnum>(fileContentMessage);
};

如果您有很多(不同的)枚举要解析,则特别有用。

于 2012-12-20T10:47:22.813 回答
21

.NET 4.0+ 有一个通用的Enum.TryParse

ContentEnum content;
Enum.TryParse(fileContentMessage, out content);
于 2012-12-20T11:00:02.517 回答
18

看看使用类似的东西

枚举.TryParse

将一个或多个枚举常量的名称或数值的字符串表示形式转换为等效的枚举对象。参数指定操作是否区分大小写。返回值表示转换是否成功。

或者

枚举解析

将一个或多个枚举常量的名称或数值的字符串表示形式转换为等效的枚举对象。

于 2012-12-20T10:41:10.530 回答