2

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

这将起作用,因为我将 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");
4

1 回答 1

0

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

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

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

于 2012-11-12T06:06:38.527 回答