假设枚举:
public enum SysLogsAppTypes { None, MonitorService, MonitorTool };
这里是一个将 ToString()
表示转换回 enum
的函数:
private SysLogsAppTypes Str2SysLogsAppTypes(string str)
{
try
{
SysLogsAppTypes res = (SysLogsAppTypes)Enum
.Parse(typeof(SysLogsAppTypes), str);
if (!Enum.IsDefined(typeof(SysLogsAppTypes), res))
return SysLogsAppTypes.None;
return res;
}
catch
{
return SysLogsAppTypes.None;
}
}
有没有办法让这个通用??
我试过:
private T Str2enum<T>(string str)
{
try
{
T res = (T)Enum.Parse(typeof(T), str);
if (!Enum.IsDefined(typeof(T), res)) return T.None;
return res;
}
catch
{
return T.None;
}
}
但我得到:
“T”是“类型参数”,在给定上下文中无效
哪里有T.None
有什么帮助吗? 谢谢
最佳答案
我认为 default
关键字是你需要的:
private T Str2enum<T>(string str) where T : struct
{
try
{
T res = (T)Enum.Parse(typeof(T), str);
if (!Enum.IsDefined(typeof(T), res)) return default(T);
return res;
}
catch
{
return default(T);
}
}
关于c# - 通用字符串到枚举的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3877706/