この__typeフィールドはDataContractJaonSerializer(DCJS)の機能であり、特にASP用にあります。適用された動作で構成されたエンドポイントのNETAJAX互換性enableWebScript。さらに具体的には、この機能はDataContractSerilizerSettings::EmitTypeInformationプロパティをAsNeededまたはに設定することで制御されますAlways。
箱から出して、WebAPIはJSONメディアのフォーマッターとしてJSON.NETを使用するようにバインドされており、そのTypeNameHandling機能で同様の概念をサポートしていますが、DCJSとのワイヤー互換性はありません。
これで、次のようにWebAPIを切り替えてDCJSを非常に簡単に使用できるようになります。
GlobalConfiguration.Configuration.Formatters.JsonFormatter.UseDataContractJsonSerializer = true;
ただし、これらの場合に内部で作成されるDCJSインスタンスは構成されていないため、それでも役に立ちません。EmitTypeInformatiomつまり、デフォルトで。になりますNone。
したがって、必要なものを取得する唯一の解決策はMediaTypeFormatter、DCJSインスタンスを作成/構成する独自のサブクラスを作成しEmitTypeInformation、それを登録して、組み込みのJsonMediaTypeFormatterではなくJSONメディアタイプを処理することです。幸いなことにASP以来。NET Web APIはオープンソースであるため、既存の実装をコピーして、この特定のケースに合わせて非常に簡単に調整できるはずです。