Как читать / анализировать содержимое из OkNegotiatedContentResult?
в одном из моих действий API (PostOrder
) Я мая потребляет другое действие в API (CancelOrder
). Оба возвращают формат JSON ResultOrderDTO
типа, установлен как ResponseTypeAttribute
для обоих действий, которые выглядят следующим образом:
public class ResultOrderDTO
{
public int Id { get; set; }
public OrderStatus StatusCode { get; set; }
public string Status { get; set; }
public string Description { get; set; }
public string PaymentCode { get; set; }
public List<string> Issues { get; set; }
}
что мне нужно-это чтение/парсинг ResultOrderDTO
ответ от CancelOrder
, Так что я могу использовать его в качестве ответа для PostOrder
. Это то, что мой PostOrder
код выглядит так:
// Here I call CancelOrder, another action in the same controller
var cancelResponse = CancelOrder(id, new CancelOrderDTO { Reason = CancelReason.Unpaid });
if (cancelResponse is OkNegotiatedContentResult<ResultOrderDTO>)
{
// Here I need to read the contents of the ResultOrderDTO
}
else if (cancelResponse is InternalServerErrorResult)
{
return ResponseMessage(Request.CreateResponse(HttpStatusCode.InternalServerError, new ResultError(ErrorCode.InternalServer)));
}
когда я использую отладчик, я вижу, что ResultOrderDTO
это есть ли где-то в ответе (похоже на Content
), как показано на картинке ниже:
но cancelResponse.Content
не существует (или, по крайней мере, у меня нет доступа к нему, прежде чем я брошу свой ответ на что-то еще), и я понятия не имею, как читать/анализировать это Content
. Есть идеи?
1 ответов
просто бросьте объект ответа на OkNegotiatedContentResult<T>
. Свойство Content является объектом типа T. который в вашем случае является объектом ResultOrderDTO
.
if (cancelResponse is OkNegotiatedContentResult<ResultOrderDTO>)
{
// Here's how you can do it.
var result = cancelResponse as OkNegotiatedContentResult<ResultOrderDTO>;
var content = result.Content;
}