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

本文关键字:对象 编译 错误 Type 反序列化 使用 | 更新日期: 2023-09-27 17:57:35

我正在尝试从数据库中反序列化一个对象,该对象以json的形式存储在一列中,然后进行反序列化,问题是我正在尝试制作一个通用方法并实现这一点,所以我还在一列中存储反序列化类型。

因此,我想做的是通过Type.GetType("mytype")获得类型,并将该类型传递给一个方法,在该方法中,传递类型是至关重要的。

问题是,由于某种原因,visual studio不理解这个系统,并将其突出显示为错误,或者可能我使用了一种糟糕的方法,我所做的是:

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

visual studio抛出的错误是:

运算符'<'不能应用于"method group"类型的操作数,并且"系统类型"

我能做些什么来解决这个问题?

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

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

但值得庆幸的是,JsonConvert提供了这种非通用过载作为替代:

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