Enum.Parse&自定义分隔符

时间:2012-02-08 17:57:16

标签: .net enums

目前,Enum.Parse仅支持逗号作为值分隔符,因此

MemberOne,MemberThree

将被正确解析,但

MemberOne|MemberThree

不会。有没有办法强制Enum.Parse接受其他字符作为分隔符(例如,“|”)而不在String.Replace参数上使用expression

1 个答案:

答案 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");