2016-02-18 65 views
0

我想在運行時反序列化一個對象,並且無法弄清楚如何在不實際傳入模型類型的情況下傳入類型。如何通過變量類型傳遞方法?

E.g.

JsonConvert.DeserialzeObject(objectToDeserialize);

我希望能夠做這樣的事情:

Type runtimeType = Type.GetType("namespace_and_class_name"); 

var result = JsonConvert.DeserializeObject<runtimeType>(objectToDeserialize); 

或類似的東西:

var result = JsonConvert.DeserializeObject<Type.GetType(stringOfType)>(objectToDeserialize); 
+0

想一想,如果你想做的事情確實有效,那麼如果在語言中不存在'var',你將如何編寫下一行使用'result'的代碼。 –

回答

3

使用this other overload代替:

object result = JsonConvert.DeserializeObject(json, type); 

記住,因爲類型在編譯時不知道,代碼不能再泛化。您必須改用object

+0

非常感謝。它起到了魅力。 – TheAkhemist