/// <inheritdoc />
        public Task SerializeToResponse(RequestExecutionContext context)
        {
            if (context.Result is IActionResult actionResult)
            {
                return(_actionResultExecutor.Execute(context, actionResult));
            }

            if (context.Result != null &&
                context.ContentSerializer != null)
            {
                return(context.ContentSerializer.SerializeToResponse(context));
            }

            if (context.Result == null)
            {
                return(NullResult(context));
            }

            if (_serializer != null &&
                _serializer.IsDefault)
            {
                return(_serializer.SerializeToResponse(context));
            }

            return(NegotiateSerialization(context));
        }
        /// <summary>
        /// Negotiate serialization
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        protected virtual Task NegotiateSerialization(RequestExecutionContext context)
        {
            context.HttpContext.Request.Headers.TryGetValue("Accept", out var accepts);

            foreach (var serializer in _contentSerializers)
            {
                if (serializer.CanSerialize(context, accepts))
                {
                    return(serializer.SerializeToResponse(context));
                }
            }

            if (_defaultSerializer != null)
            {
                return(_defaultSerializer.SerializeToResponse(context));
            }

            return(_errorHandler.HandleSerializerUnknownContentType(context));
        }