我正在阅读文件内容并在确切的位置接受字符串,如此
string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);
输出始终为Ok
或Err
另一方面,我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 = /// ///,
};
答案 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)
看一下像
这样的东西转换名称或数值为1的字符串表示形式 或更多枚举常量到等效枚举对象。一个 参数指定操作是否区分大小写。该 返回值表示转换是否成功。
或
转换名称或数值为1的字符串表示形式 或更多枚举的常量到等效的枚举对象。