我有一个对象的System.Type
,我想将它用作泛型函数的参数:JsonConvert.DeserializeObject<T>()
当然JsonConvert.DesierializeObject<theType>()
不起作用..我似乎需要该类的名称,但我不知道如何从类型中获取它。
有没有办法将类型转换回T所以我可以调用函数?
答案 0 :(得分:6)
我猜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
采用了一些参数,那么在最后一行的Invoke
方法的第二个参数中传递它们......
答案 1 :(得分:3)
您使用的是json.net吗? JsonConvert
有另一种方法
public static object DeserializeObject(string value, Type type);
你可以使用这个,比如
var result = JsonConvert.DeserializeObject("{ some json }", theType);