我希望有人可以解释如何/为什么这不适用于动态确定对象的类型,然后在泛型中使用类型。
这将起作用,因为我将日期时间显式硬编码为类型:
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
执行这些检查。
以下是一些答案,它们解决了您尝试完成的任务,尽管处理集合,但通常适用于运行时确定的泛型参数:在运行时指定泛型集合类型参数
请注意,您的"{我应该放在这里}"是他们所说的泛型参数。