我有这样的课程:
public class Pussy {
public readonly int Meows;
[JsonConstructor]
private Pussy() { }
public Pussy(int meows)
{
this.Meows = meows;
}
}
当我尝试使用Json.NET对其进行序列化时,它运行正常:
{"Meows":3}
但是在反序列化时,只需创建Meows
设置为0
的课程。
怎么了?如何解决?
答案 0 :(得分:3)
尝试将[JsonProperty]
public readonly int Meows;
属性用于只读字段
JsonConstructor
或[JsonConstructor]
public Pussy(int meows)
属性为非默认ctor。
{{1}}
答案 1 :(得分:1)
反序列化程序通常采用请求的类型,并使用反射检查可公开设置的字段和属性。
您的字段不可公开设置,因此在反序列化期间不会写入。
要解决此问题,请删除readonly
修饰符。
或者你可以create a custom resolver和/或writes to readonly fields使用反射的序列化器。