将字符串强制转换为enum



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

 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 = /// ///,
    };

使用Enum.Parse() .

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

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

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

并像这样使用:

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

当你有很多(不同的)枚举需要解析时,

特别有用。

。NET 4.0+有一个泛型Enum。TryParse

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

看看如何使用

枚举。TryParse

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

枚举。解析

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

相关内容

  • 没有找到相关文章

最新更新