Невозможно преобразовать строку в тип Enum, созданный I

У меня есть перечисление:

public enum Color
{
    Red,
    Blue,
    Green,
}

Теперь, если я прочитаю эти цвета как литеральные строки из файла XML, как я могу преобразовать его в цветной тип перечисления.

class TestClass
{
    public Color testColor = Color.Red;
}

Теперь, когда вы устанавливаете этот атрибут с помощью такой строки, я получаю очень суровое предупреждение от компилятора.: D Невозможно преобразовать из строки в цвет.

Любая помощь?

TestClass.testColor = collectionofstrings[23].ConvertToColor?????;

Ответ 1

Что-то вроде этого, что вы ищете?

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]);

Ответ 2

Try:

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]);

Смотрите документация о Enum

Изменить: в .NET 4.0 вы можете использовать более безопасный тип (а также тот, который не генерирует исключений при сбое анализа):

Color myColor;
if (Enum.TryParse(collectionofstring[23], out myColor))
{
    // Do stuff with "myColor"
}

Ответ 3

Вам нужно использовать Enum.Parse, чтобы преобразовать вашу строку в правильное значение цвета цвета:

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23], true);

Ответ 4

Как говорили все остальные:

TestClass.testColor = (Color) Enum.Parse(typeof(Color), collectionofstrings[23]);

Если у вас проблема, потому что collectionofstrings - это набор объектов, попробуйте следующее:

TestClass.testColor = (Color) Enum.Parse(
    typeof(Color), 
    collectionofstrings[23].ToString());