将字符串转换为枚举

时间:2012-12-20 10:39:06

标签: c# string casting enums

我正在阅读文件内容并在确切的位置接受字符串,如此

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

输出始终为OkErr

另一方面,我MyObjectContentEnum这样的

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 个答案:

答案 0 :(得分:164)

使用Enum.Parse()

var content = (ContentEnum)Enum.Parse(typeof(ContentEnum), fileContentMessage);

答案 1 :(得分:26)

作为额外的,您可以获取已经提供的Enum.Parse个答案,并将它们放在一个易于使用的静态方法中。在辅助类中。

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

并像这样使用它:

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

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

答案 2 :(得分:21)

.NET 4.0+具有通用Enum.TryParse

ContentEnum content;
Enum.TryParse(fileContentMessage, out content);

答案 3 :(得分:18)

看一下像

这样的东西

Enum.TryParse

  

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

Enum.Parse

  

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