7

単純なコントローラー アクションを想像してみてくださいIEnumerable<BaseType> Get()。BaseType から派生したさまざまな型の列挙を返します。

クライアントが XML を要求すると、結果は次のようになります。

<ArrayOfBaseType>
    <BaseType i:type="DerivedType1"><A>value</A></BaseType>
    <BaseType i:type="DerivedType2"><B>value</B></BaseType>
    <BaseType i:type="DerivedType3"><C>value</C></BaseType>
</ArrayOfBaseType>

ご覧のとおり、派生クラスの型はi:type属性で送信されます。

ただし、クライアントが JSON を要求する場合、次の情報が欠落しています。

[
  {"A":"value"},
  {"B":"value"},
  {"C":"value"}
]

これを修正する方法は?

4

2 に答える 2

4

次の変更が必要です。

WebApiConfig.cs で、次の行を追加する必要があります。

config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = 
    TypeNameHandling.Auto;

これにより、必要に応じて新しいプロパティが自動的に作成され$typeます。

于 2012-10-09T10:45:40.783 に答える
0

次のようにクラスを書く場合:

public class MyClass
{
    // properties here

    public string IType
    {
        get
        {
            return this.GetType().Name;
        }

        set {  }
    }
}

たぶん、それはあなたを助けるでしょう

于 2012-09-29T10:36:51.517 に答える