3

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

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

有没有办法将类型转换回 T 以便我可以调用该函数?

4

2 回答 2

7

我猜 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最后一行方法的第二个参数中......

于 2012-08-04T00:09:29.710 回答
3

你在使用 json.net 吗?JsonConvert有另一种方法

 public static object DeserializeObject(string value, Type type);

你可以用这个,比如

var result = JsonConvert.DeserializeObject("{ some json }", theType);
于 2012-08-04T05:15:35.060 回答