Вы можете анализировать содержимое как XML или JSON (вы можете инкапсулировать эту функциональность в своем собственном классе), что затем дает вам возможность добавлять поле независимо от формата (независимо от того, что SendAsync
не делает ' Т надо знать).
var newResponse = ContentDecoder.Parse(response.Content).AddField("statuscode", response.StatusCode).ToString();
при условии, что Parse
вернет тип содержимого, который вы можете изменить, не зная, в каком формате.
Это не очень хорошее решение, но оно немного заключает в себе хакерство.
Обновление : Если вы можете отказаться от HttpResponseMessage
и полностью контролировать генерацию ответа, тогда у вас могут быть специализированные подклассы, имеющие дело с ним:
interface IHttpResponseContent
{
void AddField(string name, string value);
}
class XmlHttpResponseMessage : HttpResponseMessage, IHttpResponseContent
{
}
При создании ответа вы вместо этого создаете объекты Xml / JsonHttpResponseMessage. Тогда вы можете сделать:
var newResponse = response as IHttpResponseContent;
if (newResponse != null)
{
newResponse.AddField("statuscode", response.StatusCode);
}