我正在做一个游戏,我从json数据库中读取一些数据。所有数据库都包含相似的数据,尽管差异很小。一些将“幂”存储为字符串,而另一些将其存储为数字。还有一种将其存储为字符串或数字的方法,因为有时“ power”可以为“ 1 + X”或其他形式。另外,有些将“ power”变量存储在名称“ power”下,而另一些使用“ pwr”。因此,我正在编写一种轻松获取这些内容的方法。在我的应用程序(用C#编写)中,我得到了包含所有信息的字典。所以我目前有这个:
void TryGetValueFromJson<T>(ref T variableToFill, string[] possibleValueNames, Dictionary<string,object> info) {
foreach (string valueName in possibleValueNames) {
object value;
if (info.TryGetValue(valueName, out value)) {
//I'm stuck here
break;
}
}
}
顾名思义,variableToFill是我正在为其读取值的类中的变量。string []是不同数据库中此变量的所有可能名称(“ power”,“ pwr”)。“ info”变量是我从服务器获取的json。
因此,现在我必须将不同的值转换为所需的类型。如果我的variableToFill是一个字符串,但是数据库将其作为int值,则应该对其进行转换。虽然我不确定如何正确执行此操作。
该Convert.ChangeType
方法是您的朋友。它是为您完成大量工作的那些方法之一,并且可以节省大量代码。它依赖于实现IConvertible
接口的类型,但是幸运的是,大多数原始类型都可以:
void TryGetValueFromJson<T>(ref T variableToFill, string[] possibleValueNames, Dictionary<string,object> info)
{
Type outputType = typeof(T);
foreach (string valueName in possibleValueNames)
{
object value;
if (info.TryGetValue(valueName, out value))
{
variableToFill = (T)Convert.ChangeType(value, outputType);
break;
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句