【问题标题】:How to parse a JToken or JObject's Value To A Dynamically Determined Type如何将 JToken 或 JObject 的值解析为动态确定的类型
【发布时间】:2012-11-12 05:55:41
【问题描述】:

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

这会起作用,因为我将 DateTime 明确地硬编码为类型:

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");

【问题讨论】:

标签: c# .net json.net


【解决方案1】:

它不起作用,因为您在运行时确定 dataType,但是,Value&lt;&gt; 需要在编译时知道类型。一方面,Value&lt;T&gt; 可能对 T 必须是什么有限制,如果它不知道 dataType 将是什么,它就无法在编译时对 dataType 执行这些检查。

以下是一些解决您尝试完成的问题的答案,尽管处理的是集合,但通常适用于运行时确定的泛型参数: Specifying generic collection type param at runtime

请注意,您的“{WHAT SHOULD I PUT HERE}”是他们所称的通用参数。

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2012-08-09
    • 2017-07-14
    • 2021-12-15
    相关资源
    最近更新 更多