简化为最简单的形式,我有一个继承自另一个的类
public class BaseClass
{
protected int _property1;
public virtual int Property1
{
get
{
return _property1;
}
set
{
_property1 = value;
}
}
public int Property2 { get; set; }
}
public class InheritedClass : BaseClass
{
public override int Property1
{
set
{
_property1 = value + 1;
}
}
public int Property3 { get; set; }
}
和一个 WebAPI 控制器
public class TestController : ApiController
{
// GET api/test/5
public InheritedClass Get(int id)
{
return new InheritedClass
{
Property1 = id + 1,
Property2 = id,
Property3 = id - 1
};
}
}
如果我从控制器请求 XML,使用GET api/test/1
,我得到我期望的数据
<InheritedClass>
<Property1>3</Property1>
<Property2>1</Property2>
<Property3>0</Property3>
</InheritedClass>
但是如果我请求 JSON,它会省略继承的属性。
{"Property3":0,"Property2":1}
我想要的是
{"Property1":3, "Property3":0, "Property2":1}
我可以通过将 InheritedClass 更改为来修复它
public class InheritedClass : BaseClass
{
public override int Property1
{
get
{
return _property1;
}
set
{
_property1 = value + 1;
}
}
...
但我真的不想 - 这似乎很湿。是什么赋予了?我缺少的 JSONFormatter 上是否有设置?