我正在尝试从数据库反序列化一个对象,该对象作为json存储在一个列中,然后反序列化,问题是我正在尝试制作一个通用方法并实现它,所以我也将反序列化类型存储在列中。
所以我想做的是通过Type.GetType("mytype")
获取类型并将该类型传递给一个必须传递类型的方法。
问题在于,由于某种原因,visual studio不理解这个systax并将其强调为错误,或者我使用的是错误的方法,我所做的是:
string toDeserialize = "jsonObject";
JsonConvert.DeserializeObject<Type.GetType("customType")>(toDeserialize);
视觉工作室抛出的错误是:
运营商'&lt;'不能应用于'方法组'类型的操作数 '的System.Type'
我该怎么做才能解决这个问题?
答案 0 :(得分:2)
以这种方式提供的通用类型参数必须在编译时知道。如果要使用在运行时指定的类型调用此泛型方法,可以使用反射通过MakeGenericMethod
生成方法。
但幸运的是,JsonConvert
提供了this non-generic overload作为替代方案:
Type resultType = Type.GetType("customType");
object result = JsonConvert.DeserializeObject(toDeserialize, resultType);