マイウェブAPIプロジェクトは現在、クライアントに配信するサーバにコンテンツを戻すには、このメソッドを使用しています。C#:既に存在するHttpResponseMessageオブジェクトに匿名型を追加する方法?
return Request.CreateResponse(HttpStatusCode.OK,someAnonymouslyTypedVariableHere);
ASP.NETは自動的にAccept
ヘッダに基づいて正しいシリアライザを選択します。
しかし、私は自分のレスポンスオブジェクトをコードの早い段階で作成し、それを必要に応じて作成したいと考えています。このように:
HttpResponseMessage m = Request.CreateResponse();
// a bunch of stuff happens here
var someAnonymouslyTypedVariableHere = new { ... }
m.Status = HttpStatusCode.OK;
m.Content = ???
// potentially other code here
return m;
私はシリアライザを設けることなく、タイプObjectContent
のオブジェクトを作成することはできませんことがわかりました。つまり、Acceptヘッダーに基づいて自動シリアライザの検出を失うことになります。
既存のHttpResponseMessageにObjectContentを割り当てる方法はありますか?ASP.NETは正しいシリアライザを選択できますか?
私がこれをやりたい理由は、コードの可読性と最適化のためです。私はHttpResponseMessageの準備ができているが、返す準備ができていない時があります。だから私が返すかもしれないすべての単一のポイントでreturn Request.CreateResponse...
をやっているより、私はむしろ、コードが実行されるとHttpResponseMessage
オブジェクトを生成し、それを最後に返すようにします。
確かにこのデータを変数に格納し、最後にそれを返すことができました。しかし、たとえば、あるコードフローでObjectContent
ではなくStringContent
のコンテンツが必要であるとします。したがって、私はオブジェクトに動的にコンテンツを設定できる必要があります。