2013-04-16 2 views
-3

Мне нужно присвоить строку значению Enum. Мой сценарий и код нижеstring to Enum in C#

Am доступа к методу WebService сказать addWhere(int i ,int j,Comparison)

Где сравнения типа Enum.

Am выборка значение из пользовательского интерфейса и иметь его в строке

string strComparison= "AND"; or 

string strComparison= "OR" 

я нужно установить эти значения для ENUM. Я пробовал приведенный ниже код

addWhere(2 ,3,Enum.Parse(typeof(Comparison),strComparison)) 

Но не работал. Каков способ решения этого или альтернативных методов?

Благодаря

+0

'Enum.Parse' - это решение, нет хорошей альтернативы. Вы не говорите, что пошло не так. См. Дубликат или документацию. – Jodrell

+1

«не работает» никогда не является приемлемым описанием проблемы. ** Что ** не работает? Какую ** ошибку ** вы получили? Пожалуйста, имейте в виду, чтобы включить все ** соответствующие данные ** в ваши вопросы. –

ответ

2

Похоже, ваш отсутствует обратный бросок т.е.

(Comparison)Enum.Parse(typeof(Comparison), strComparison); 

Enum.Parse возвращает object были, как ваш метод addWhere ожидает значение в Comparison типа.

0

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

addWhere(2, 3, (Comparison)Enum.Parse(typeof(Comparison), strComparison)); 
0

Вы можете сделать что-то вроде:

Comparison comparison; 
if(Comparison.TryParse(strComparison, out comparison)) 
{ 
    // Work with the converted Comparison 
} 
0

Как сказано в предыдущих постах, вы, возможно, отсутствует приведение типов.

enum Comparision 
{ 
     AND, 
     OR 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     Comparision cmp = (Comparision)Enum.Parse(typeof (Comparision), "And", true); 
     Console.WriteLine(cmp == Comparision.OR ); 
     Console.WriteLine(cmp == Comparision.AND); 
    } 
}