private IActionResult Convert <T>(AppResponse <T> appResponse, Func <T, string> contentRetriever) { switch (appResponse) { case AppResponse <T> .Ok c: return(Content(contentRetriever(c.Content), "application/json")); case AppResponse <T> .Error c: return(StatusCode((int)c.HttpStatusCode, c.Message)); default: throw new InvalidOperationException($"Unexpected response type: {appResponse?.GetType().Name ?? "<NULL>"}"); } }