我编写了一个dart方法,该方法采用通用类型T,然后尝试将动态类型转换为T。(编辑:此后,我从等式中删除了通用类型,并且从dynamic转换为String仍然失败,同样的错误。)
在这种特定情况下,我将String传递为T。
以下行引发错误
Protected void wystaw_liste (object obj)
{
if (obj == null) return;
Type type = obj.GetType();
PropertyInfo[] properties = type.GetProperties();
foreach (PropertyInfo property in properties)
{
object propValue = property.GetValue(obj, null);
var elems = propValue as IList;
if (elems != null)
{
foreach (object item in elems)
{
wystaw_liste(item);
}
}
else
{
if (property.PropertyType.Assembly != type.Assembly)
{
if (propValue != null)
{
parametry_list.Add(propValue.ToString());
}
}
}
}
}
完整的代码如下...
T result = value.cast<T>();
我得到的错误如下。在第一次调用我的应用程序代码后,我已经修剪了堆栈跟踪。
06-25 09:34:04.883 I / flutter(7755):类'String'没有实例 方法“ cast”。 06-25 09:34:04.883 I / flutter(7755):接收方:“ foo1” 06-25 09:34:04.883 I / flutter(7755):尝试调用:cast() 06-25 09:34:04.920 I / flutter(7755):当引发异常时, 这是堆栈:06-25 09:34:05.004 I / flutter(7755):#0
Object.noSuchMethod(dart:core-patch / object_patch.dart:50:5)06-25 09:34:05.011 I / flutter(7755):#1 JsonObject.getValue (软件包:my_app / Util / json_parser.dart:62:26)
答案 0 :(得分:1)
cast
是在List
和Iterable
上的方法,而不是在常规类型上的方法。您正在寻找as
。
将T result = value.cast<T>();
替换为T result = value as T;
。如果value
不是T
,则会抛出此错误。要么忍受,要么抓住并扔掉JsonParseException
。