反序列化只读变量



我有一个这样的类:

public class Pussy {
    public readonly int Meows;
    [JsonConstructor]
    private Pussy() { }
    public Pussy(int meows)
    {
        this.Meows = meows;
    }
}

当我试图用Json序列化它。. NET,它工作良好:

{"Meows":3}

但是当反序列化时,它只是创建一个将Meows设置为0的类。

怎么了?如何解决这个问题?

尝试将JsonProperty属性用于只读字段

[JsonProperty]
public readonly int Meows;

JsonConstructor属性为非默认属性。

[JsonConstructor]
public Pussy(int meows)

反序列化器通常接受请求的类型,并使用反射检查可公开设置的字段和属性。

您的字段不是公共可设置的,因此在反序列化期间不会写入。

要修复它,请删除readonly修饰符。

或者您可以创建一个自定义解析器和/或序列化器,使用反射写入只读字段。

相关内容

  • 没有找到相关文章

最新更新