use*_*862 72 c# string enums casting
我正在读取文件内容,并在这样的确切位置获取字符串
string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);
Run Code Online (Sandbox Code Playgroud)
输出将始终为Ok或Err
在另一边我MyObject这有ContentEnum这样的
public class MyObject
{
public enum ContentEnum { Ok = 1, Err = 2 };
public ContentEnum Content { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,在客户端我想使用这样的代码(将我的字符串转换fileContentMessage为Content属性)
string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);
MyObject myObj = new MyObject ()
{
Content = /// ///,
};
Run Code Online (Sandbox Code Playgroud)
Cod*_*ter 169
使用Enum.Parse().
var content = (ContentEnum)Enum.Parse(typeof(ContentEnum), fileContentMessage);
Run Code Online (Sandbox Code Playgroud)
ple*_*ijf 26
另外,您可以获取Enum.Parse已经提供的答案,并将它们放在辅助类中易于使用的静态方法中.
public static T ParseEnum<T>(string value)
{
return (T)Enum.Parse(typeof(T), value, ignoreCase: true);
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
{
Content = ParseEnum<ContentEnum>(fileContentMessage);
};
Run Code Online (Sandbox Code Playgroud)
如果您要解析许多(不同的)枚举,这将特别有用.
Chr*_*tow 21
.NET 4.0+具有通用的Enum.TryParse
ContentEnum content;
Enum.TryParse(fileContentMessage, out content);
Run Code Online (Sandbox Code Playgroud)
Adr*_*der 18
看看使用类似的东西
将一个或多个枚举常量的名称或数值的字符串表示形式转换为等效的枚举对象.参数指定操作是否区分大小写.返回值表示转换是否成功.
要么
将一个或多个枚举常量的名称或数值的字符串表示形式转换为等效的枚举对象.