Этот вопрос уже имеет ответ здесь:
У меня есть перечисление:
public enum Color
{
Red,
Blue,
Green,
}
Теперь, если я считал те цвета как литеральные строки от XML-файла, как я могу преобразовать его в перечислимый цвет шрифта.
class TestClass
{
public Color testColor = Color.Red;
}
Теперь при установке того атрибута при помощи литеральной строки как так, я получаю очень резкое предупреждение из компилятора.: D не Может преобразовать из строки для Окраски.
Какая-либо справка?
TestClass.testColor = collectionofstrings[23].ConvertToColor?????;
Вы ищете что-то подобное?
TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]);
Как все говорили:
TestClass.testColor = (Color) Enum.Parse(typeof(Color), collectionofstrings[23]);
Если у вас проблема, потому что коллекция строк
- это коллекция объектов, тогда попробуйте следующее:
TestClass.testColor = (Color) Enum.Parse(
typeof(Color),
collectionofstrings[23].ToString());
Попробуйте:
TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]);
Изменить: в .NET 4.0 вы можете использовать более безопасный по типу метод (а также метод, который не генерирует исключения при сбое синтаксического анализа):
Color myColor;
if (Enum.TryParse(collectionofstring[23], out myColor))
{
// Do stuff with "myColor"
}
Вам нужно использовать Enum.Parse для преобразования строки в правильное значение перечисления цветов:
TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23], true);