Вы можете добавить свой собственный вспомогательный метод для класса Enum следующим образом:
<code>public static class EnumHelpers
{
public static object Parse(Type enumType, string value, char separator)
{
return Enum.Parse(enumType, value.Replace(separator, ','));
}
}
Затем использовать его так:
<code>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");