-4

最も単純な形式に縮小すると、別のクラスから継承するクラスがあります

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 の設定はありますか?

4

1 に答える 1