Enum.Parse & Custom Separators - PullRequest
       1

Enum.Parse & Custom Separators

1 голос
/ 08 февраля 2012

В настоящее время Enum.Parse поддерживает только запятую в качестве разделителя значений, поэтому

MemberOne,MemberThree

будет обрабатываться правильно, а

MemberOne|MemberThree

- нет.Есть ли способ заставить Enum.Parse принимать другие символы в качестве разделителя (например, '|') без использования String.Replace для параметра expression?

1 Ответ

4 голосов
/ 08 февраля 2012

Вы можете добавить свой собственный вспомогательный метод для класса 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...