问题描述
我的课程比这还要复杂,但这是技巧:
public class BaseClass {}
[JsonConverter(typeof(DerivedClassjsonConverter)]
public class DerivedClass: BaseClass {}
public class DerivedClassjsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(DerivedClass) || objectType.IsSubclassOf(typeof(DerivedClass));
}
// implementations both ReadJson() and WriteJson()
}
[JsonConverter(typeof(BaseClassListJsonConverter)]
public class BaseClassList
{
private List<BaseClass> list;
}
如果我像这样序列化BaseClass的集合,则会调用DerivedClassjsonConverter的WriteJson():
// this is a snippet from BaseClassListJsonConverter.WriteJson() override
writer.WritePropertyName("list");
writer.WriteStartArray();
for (int i = 0; i < SOME_COUNT; i++)
{
BaseClass bc = new DerivedClass();
serializer.TypeNameHandling = TypeNameHandling.Auto;
serializer.Serialize(writer,bc,typeof(BaseClass));
}
writer.WriteEndarray();
但是,如果我这样反序列化,则不会调用DerivedClassjsonConverter的ReadJson():
// this is a snippet from BaseClassListJsonConverter.ReadJson() override (assume reader is at the correct Token
serializer.TypeNameHandling = TypeNameHandling.All;
List<BaseClass> baseClassList = (List<BaseClass>)serializer.Deserialize(reader,typeof(List<BaseClass>));
这是不受支持的还是我做错了什么?
感谢您的时间和帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)