2012-11-12 49 views
1

我希望有人可以解釋如何/爲什麼這不適用於動態確定對象的類型,然後使用泛型中的類型。如何解析JToken或JObject的值到動態確定類型

這工作,因爲我指定的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

[如何使用反射調用泛型方法?](http://stackoverflow.com/questions/232535/how-to-use-reflection-to-call-generic-method) – nawfal

回答

0

它不工作,因爲你正在確定dataType在運行時,但是,Value<>需要在編譯時知道類型。 Value<T>可能對T必須有一個約束,如果它不知道dataType會是什麼,它不能在編譯時在dataType上執行這些檢查。

這裏有一些答案,解決您要完成的任務,但處理的集合,適用於運行時一般確定的通用參數: Specifying generic collection type param at runtime

請注意,您的「{我應該放在這裏}」是他們在調用通用參數。

相關問題