internal static TResponse PostHandle <TResponse>(this TResponse response, IOperation operation) where TResponse : ICamundaResponse { if (!response.IsWithoutErrors()) { throw CommonExceptions.CamundaRequestCanNotBeSent(operation, response.Status, response.Reason, response.Output); } var settings = new JsonSerializerSettings { ContractResolver = new CamundaResponseJsonResolver(), NullValueHandling = NullValueHandling.Ignore }; var intermediateResponse = JsonConvert.DeserializeObject <IntermediateCamundaResponse <object> >(response.Output, settings); if (intermediateResponse.IsWithoutErrors()) { var property = response.GetType().GetProperty(nameof(IntermediateCamundaResponse <object> .Response)); var value = JsonConvert.DeserializeObject(intermediateResponse.Output, property.PropertyType, settings); property.SetPropertyValue(response, value); } else { response.Errors = JsonConvert.DeserializeObject(intermediateResponse.Output, settings); } response.Status = intermediateResponse.Status; response.Output = intermediateResponse.Output; response.Reason = intermediateResponse.Reason; return(response); }