2016-12-16 2 views
2

У меня есть следующий код:Как я могу бросить строку к Enum

public string GetSetting(string setting) 
{ 
    return db2.ExecuteScalar<string>("SELECT VALUE FROM Setting WHERE SettingType = ?", setting); 
} 

public enum NOA 
{ 
    All = 0, 
    Five = 5, 
    Seven = 7, 
    Nine = 9, 
    Ten = 10 
} 
public static partial class Extensions 
{ 
    public static string Text(this NOA noa) 
    { 
     switch (noa) 
     { 
      case NOA.Ten: return "10"; 
      case NOA.Five: return "5"; 
      case NOA.Seven: return "7"; 
      case NOA.Nine: return "9"; 
     } 
     return ""; 
    } 
} 

То, что я хотел бы сделать, это получить значение NOA и приведение его в НОА.

Вот что я пробовал. Но я получаю сообщение об ошибке «Строка не содержит определения для значения»:

NOA noa = (NOA)App.DB.GetSetting("NumberOfAnswers").Value; 

Когда я пытаюсь это сделать. Я получаю сообщение об ошибке сказав «Не удается преобразовать строку типа в Japanese.NOA:

NOA noa = (NOA)App.DB.GetSetting("NumberOfAnswers"); 

Может кто-нибудь сказать мне, как я могу получить значение и поместить его в NOA

ответ

4

Похоже, вы получаете результат, как? . строка из указанного метода, и вы хотите, чтобы быть преобразованы в перечисление, здесь лучший вариант для вас TryParse, который может быть использован как в следующем:

NOA noa; 
bool conversionResult = Enum.TryParse(App.DB.GetSetting("NumberOfAnswers"), out noa); 

выполняя эту строку, вы получите логическое значение conversionResult, если его значение означает, что преобразование завершено ред успешно, если оно ложно, что означает преобразование не удалось, на этот раз вы получите значение по умолчанию NOA в noa, Пусть возвращаемое значение App.DB.GetSetting("NumberOfAnswers") быть "10" тем значение noa будет Ten и conversionResult будет true

+0

ун-повезло - я в полный контроль того, что происходит в настройках не могли бы вы, возможно, также дать предположение, что не включает в себя проверка. Благодарю. – Alan2

2

Разбираем значение для вас тип перечисления первого, а затем преобразовать его в целое

var result = result.Text(Enum.Parse(typeof(NOA),App.DB.GetSetting("NumberOfAnswers"))); 
+0

Простите, может быть, я не был таким ясным. Я хотел бы иметь что-то, что вызывает GetSettings с правой стороны и получить значение в noa как тип noa. Спасибо – Alan2

+0

@Alan: обновил ответ. – DarkKnight

Смежные вопросы