使用Type对象反序列化对象会引发编译错误

时间:2014-04-09 19:40:54

标签: c# json visual-studio serialization

我正在尝试从数据库反序列化一个对象,该对象作为json存储在一个列中,然后反序列化,问题是我正在尝试制作一个通用方法并实现它,所以我也将反序列化类型存储在列中。

所以我想做的是通过Type.GetType("mytype")获取类型并将该类型传递给一个必须传递类型的方法。

问题在于,由于某种原因,visual studio不理解这个systax并将其强调为错误,或者我使用的是错误的方法,我所做的是:

string toDeserialize = "jsonObject";
JsonConvert.DeserializeObject<Type.GetType("customType")>(toDeserialize);

视觉工作室抛出的错误是:

  

运营商'&lt;'不能应用于'方法组'类型的操作数   '的System.Type'

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

以这种方式提供的通用类型参数必须在编译时知道。如果要使用在运行时指定的类型调用此泛型方法,可以使用反射通过MakeGenericMethod生成方法。

但幸运的是,JsonConvert提供了this non-generic overload作为替代方案:

Type resultType = Type.GetType("customType");
object result = JsonConvert.DeserializeObject(toDeserialize, resultType);