我有一個對象的System.Type
,我想用它作爲參數傳遞給泛型函數:JsonConvert.DeserializeObject<T>()
轉換的System.Type到T參數
當然JsonConvert.DesierializeObject<theType>()
是不行的。我似乎需要類的名字,但我不知道如何從類型中獲得它。
有沒有辦法將類型轉換回T,所以我可以調用函數?
我有一個對象的System.Type
,我想用它作爲參數傳遞給泛型函數:JsonConvert.DeserializeObject<T>()
轉換的System.Type到T參數
當然JsonConvert.DesierializeObject<theType>()
是不行的。我似乎需要類的名字,但我不知道如何從類型中獲得它。
有沒有辦法將類型轉換回T,所以我可以調用函數?
是否使用json.net通過他們在最後一行Invoke
方法的第二個參數...? JsonConvert
有另一種方法
public static object DeserializeObject(string value, Type type);
你可以用這一個,像
var result = JsonConvert.DeserializeObject("{ some json }", theType);
我想DeserializeObject是一個靜態方法?嘗試使用反射:
var methodInfo = typeof(JsonConverter).GetMethod("DeserializeObject", System.Reflection.BindingFlags.Static | BindingFlags.Public);
var genericArguments = new Type[] { theType };
var genericMethodInfo = methodInfo.MakeGenericMethod(genericArguments);
var result = genericMethodInfo.Invoke(null, null);
如果DeserializeObject
tooks一些參數,然後
查理回答了JSonConvert的具體問題,但這個答案是更普遍 – JoelFan 2014-10-15 19:10:56