2016-12-16 42 views
2

我有以下代码:我怎么能投String到枚举

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 = (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,如果其真实意味着转换完成海关成功如果是假的,这意味着转换失败,这时候你会得到noaNOA的默认值,让我们从App.DB.GetSetting("NumberOfAnswers")返回值是"10"noa价值会TenconversionResulttrue

+0

不幸运 - 检查。谢谢。 – Alan2

2

首先将值解析为枚举类型然后将其转换为整数

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

对不起,也许我不太清楚。我想要的是在右侧有一些调用GetSettings的东西,并将noa的值作为noa类型获取。谢谢 – Alan2

+0

@Alan:更新了答案。 – DarkKnight