超全模态模型 × Harness 升级,升级解锁 ArkClaw,最新支持 DeepSeek-V4 系列与 GLM-5.1
你的核心问题在于泛型类型的不变性以及反射获取方法时未匹配实际泛型队列类型,以下是具体解决方法:
Queue<T>
Expense
object
Queue<Expense>
Queue<object>
typeof(Queue).GetMethod("Enqueue")
Queue
TargetException
修改读档中处理Queue的逻辑,通过反射获取实际泛型队列类型的Enqueue方法并调用:
if (propertyInfo.PropertyType.IsGenericType && propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(Queue<>)) { Type genericArgument = propertyInfo.PropertyType.GetGenericArguments()[0]; Variant variant = Json.ParseString(stringVal); Godot.Collections.Dictionary<string, Variant> queueDict = (Godot.Collections.Dictionary<string, Variant>)variant; // 获取目标队列实例 object queueInstance = propertyInfo.GetValue(newObject); // 获取该泛型Queue<T>对应的Enqueue方法 MethodInfo enqueueMethod = propertyInfo.PropertyType.GetMethod("Enqueue", new[] { genericArgument }); foreach (KeyValuePair<string, Variant> pair in queueDict) { string queueElementString = (string)pair.Value; object queueObject = CreateDefaultObject(queueElementString); // 反射调用Enqueue方法完成元素入队 enqueueMethod.Invoke(queueInstance, new[] { queueObject }); } return true; }
newObject
propertyInfo.PropertyType
Enqueue
queueObject
如果后续需要支持List<T>等其他泛型集合,可将集合处理逻辑抽象为通用方法,核心思路一致:
List<T>
typeof(List<>)
Add
内容的提问来源于stack exchange,提问作者JohnCarpenter
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起
模型再升级,30秒超长叙事, 模态参考扩容
模型自由,工具不限,最新支持 Deepseek-V4 系列、GLM-5.3 系列
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列
大模型19元起,Al应用9.9元畅享,新人首购爆款尽享优惠