我希望有人可以解释为什么这不能用于动态确定对象的类型然后使用泛型中的类型。
这将有效,因为我将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");
答案 0 :(得分:0)
它不起作用,因为您在运行时确定dataType
,但是,Value<>
需要在编译时知道类型。首先,Value<T>
可能对T
必须具有约束,并且如果它不知道dataType
,它就无法在dataType
的编译时执行这些检查将是。
以下是一些解决您尝试完成的问题的答案,尽管处理集合,但通常适用于运行时确定的通用参数: Specifying generic collection type param at runtime
请注意,您的“{我应该把它放在哪里}”就是他们所说的通用参数。