将System.Type转换为T参数

本文关键字:参数 转换 System Type | 更新日期: 2024-09-24 00:02:57

我有一个对象的System.Type,我想把它用作泛型函数的参数:JsonConvert.DeserializeObject<T>()

当然JsonConvert.DesierializeObject<theType>()不起作用。。我似乎需要类的名称,但我不确定如何从类型中获取它。

有没有办法把类型转换回T,这样我就可以调用函数了?

将System.Type转换为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);