将System.Type转换为T参数
本文关键字:参数 转换 System Type | 更新日期: 2024-09-24 00:02:57
我有一个对象的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);