我有以下代码:
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。
这是我尝试过的。但我得到一个错误说&#34; String不包含Value&#34;的定义:
NOA noa = (NOA)App.DB.GetSetting("NumberOfAnswers").Value;
当我试试这个。我得到一个错误说&#34;无法将类型字符串转换为Japanese.NOA:
NOA noa = (NOA)App.DB.GetSetting("NumberOfAnswers");
有人可以告诉我如何获得价值并将其放入noa吗?
答案 0 :(得分:4)
好像您从指定的方法获取输出为字符串。并且你希望它被转换为枚举,这里更好的选择是TryParse,可以像下面这样使用:
NOA noa;
bool conversionResult = Enum.TryParse(App.DB.GetSetting("NumberOfAnswers"), out noa);
通过执行此行,您将获得conversionResult
中的布尔值,如果它的true表示转换成功完成,如果它为false,这意味着转换失败,这次您将获得{{1}的默认值1}}在NOA
中,让noa
的返回值为App.DB.GetSetting("NumberOfAnswers")
,"10"
的值为noa
,Ten
为conversionResult
true
答案 1 :(得分:2)
首先将值解析为枚举类型,然后将其转换为整数
var result = result.Text(Enum.Parse(typeof(NOA),App.DB.GetSetting("NumberOfAnswers")));