我正在实现一个自定义(和通用)Json.net 序列化程序,并在路上遇到了一个障碍,我可以使用一些帮助。
当反序列化器映射到作为接口的属性时,我如何才能最好地确定要构造哪种对象以反序列化以放入接口属性中。
我有以下内容:
[JsonConverter(typeof(MyCustomSerializer<foo>))]
class foo
{
int Int1 { get; set; }
IList<string> StringList {get; set; }
}
我的序列化程序正确地序列化了这个对象,但是当它回来时,我尝试将 json 部分映射到对象,我有一个 JArray 和一个接口。
我目前正在实例化任何可枚举的东西,比如 List
theList = Activator.CreateInstance(property.PropertyType);
这可以在反序列化过程中使用,但是当属性是 IList 时,我会收到关于无法实例化接口的运行时抱怨(显然)。
那么我怎么知道在这种情况下要创建什么类型的具体类呢?
谢谢