のカスタム実装を行おうとしていますMediaTypeFormatter
が、メソッドbool CanReadType(Type type)
は常にIKeyValueModel
my type ではなくtype で呼び出されMyProduct
ます。
私のAPIコントローラーには次のものがあります:
[HttpPost]
public Task Save(MyProduct product)
いくつかの例 ( example 1、example 2 ) を見て、コードも試しました。
protected override bool CanReadType(Type type)
{
if (type == typeof(IKeyValueModel))
return false;
return true;
}
しかし、その後、「MissingMethodException: このオブジェクトにパラメーターなしのコンストラクターが定義されていません」というメッセージが表示されます。これは、モデル タイプにパラメーターなしのコンストラクターがないためです。CanReadType
に false を返すためIKeyValueModel
、フレームワークは別のメディア タイプ フォーマッタを使用しているようです。実際、メソッドOnReadFromStreamAsync
がヒットすることはありません。
モデルがどのように逆シリアル化されるかを制御できるようにしたい、実際の型を取得したいが、IKeyValueModel
.
これは、モデル バインダーを使用する MVC で既にうまく機能していました。
乾杯。
更新 2012/05/29:
デフォルトのjsonフォーマッタを削除すると動作します:
public static void RegisterApis(HttpConfiguration config)
{
config.Formatters.Clear();
しかし、両方を保持したいのですが、どちらを使用したいかをどのように指定できますか?
よろしく。