Как читать / анализировать содержимое из 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), как показано на картинке ниже:

Debugger

но 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;
}