我有System.Type
一个对象,我想将它用作泛型函数的参数:JsonConvert.DeserializeObject<T>()
当然JsonConvert.DesierializeObject<theType>()
不起作用..我似乎需要类的名称,但我不确定如何从类型中获取它。
有没有办法将类型转换回 T 以便我可以调用该函数?
我猜 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
最后一行方法的第二个参数中......
你在使用 json.net 吗?JsonConvert
有另一种方法
public static object DeserializeObject(string value, Type type);
你可以用这个,比如
var result = JsonConvert.DeserializeObject("{ some json }", theType);