如何将 JToken 或 JObject 的值解析为动态确定的类型



我希望有人可以解释如何/为什么这不适用于动态确定对象的类型,然后在泛型中使用类型。

这将起作用,因为我将日期时间显式硬编码为类型:

string serializedObject = JsonConvert.SerializeObject(exampleObject);
Type dataType = exampleObject.GetType();
JObject jObject = JObject.Parse(serializedObject);
jObject.Value<DateTime>("propertyName");

但是,这些似乎都不起作用:

jObject.Value<typeof(dateType)>("propertyName");
jObject.Value<dateType>("propertyName");

如何在此处正确指定属性的类型:

jObject.Value<{WHAT SHOULD I PUT HERE}>("propertyName");

它不起作用,因为您在运行时确定dataType,但是,Value<>需要在编译时知道类型。 首先,Value<T>可能对T必须是什么有约束,如果它不知道dataType是什么,它就无法在编译时dataType执行这些检查。

以下是一些答案,它们解决了您尝试完成的任务,尽管处理集合,但通常适用于运行时确定的泛型参数:在运行时指定泛型集合类型参数

请注意,您的"{我应该放在这里}"是他们所说的泛型参数。

相关内容

  • 没有找到相关文章

最新更新