我正在尝试从json反序列化对象。问题是对象的类型是通用的,所以我这样做:
public class MyConverter<T> : JsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.StartObject)
{
JObject jObject = JObject.Load(reader);
if (jObject["content"] != null)
{
foreach (JObject t in jObject["content"])
{
List<JProperty> jPropList = t.Properties()
.Where(attr => attr.Name.Equals("date") || attr.Name.Equals("hour"))
ToList();
if (jPropList != null)
{
for (int i = jPropList.Count - 1; i >= 0; i--)
{
if (jPropList.ElementAt(i).Name.ToString().Equals("date"))
{
dt = DateTime.Parse(jPropList.ElementAt(i).Value.ToString());
}
else if (jPropList.ElementAt(i).Name.ToString().Equals("hour"))
{
string[] horario = jPropList.ElementAt(i).Value.ToString().Split(':');
dt = dt.AddHours(Convert.ToUInt16(horario[0]));
dt = dt.AddMinutes(Convert.ToUInt16(horario[1]));
dt = dt.AddSeconds(Convert.ToUInt16(horario[2]));
}
}
t.Property("date").Remove();
t.Property("hour").Remove();
}
T obj = serializer.Deserialize <objectType.GenericTypeArguments[0]> (t.CreateReader());
}
}
}
}
}
但该行
T obj = serializer.Deserialize < objectType.GenericTypeArguments[0] > (t.CreateReader());
给我编译错误消息:
“运营商”&lt;'不能应用于'方法组'类型的操作数 '类型'”。
我知道
objectType.GenericTypeArguments[0]
返回一个类型,它就是我需要的类型,我可以实例化到我所拥有的类之一。
如何获取用于反序列化的通用对象的类型?我怎样才能做到这一点?