目前,Enum.Parse
仅支持逗号作为值分隔符,因此
MemberOne,MemberThree
将被正确解析,但
MemberOne|MemberThree
不会。有没有办法强制Enum.Parse
接受其他字符作为分隔符(例如,“|
”)而不在String.Replace
参数上使用expression
?
答案 0 :(得分:4)
您可以为Enum类添加自己的自定义帮助方法,如下所示:
public static class EnumHelpers
{
public static object Parse(Type enumType, string value, char separator)
{
return Enum.Parse(enumType, value.Replace(separator, ','));
}
}
然后像这样使用它:
myEnum x = (myEnum)EnumHelpers.Parse(typeof(myEnum), "a|b", '|');
我不确定这是否符合您的标准 - 它仍然使用string.Replace,但您不必在参数中使用它。
您还可以使用这样的方法,它可以接受多个选项,而无需在每次调用时指定分隔符:
private const char[] additionalSeparators = new char[] { '|', '$', '#' };
public static object Parse(Type enumType, string input)
{
string val = input;
foreach(char c in additionalSeparators)
{
val = val.Replace(c, ',');
}
return Enum.Parse(enumType, val);
}
可以像这样调用:
myEnum x = (myEnum)EnumHelpers.Parse(typeof(myEnum), "a|b");