2016-12-16 39 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