假设我在 C# 中有以下类。
class MyClass
{
[JsonIgnore]
public Foo Foo { get; set; }
[JsonProperty("bar")]
private Bar Bar
{
get
{
return new Bar()
{
Foo = this.Foo,
}
}
set
{
this.Foo = value.Foo;
}
}
}
现在假设我创建以下实例:
var instance = new MyClass()
{
Foo = new Foo(){//init properties of Foo};
}
这会正确序列化为 json,但不会反序列化。Bar.set() 似乎从未被调用过。知道为什么吗?我一直在浏览Newtonsoft文档以寻找线索,但还没有找到任何有用的东西。
根据评论,我想出了以下似乎有效的解决方案。
class MyClass
{
private Bar _bar = new Bar();
[JsonIgnore]
public Foo Foo
{
get { return Bar.Foo; }
set { Bar.Foo = value; }
}
[JsonProperty("bar")]
private Bar Bar
{
get
{
// there's some validation logic that goes here
return _bar;
}
set
{
_bar = value;
}
}
}