I think strongly-typed ContentViewComponentResult/ViewViewComponentResult/JsonViewComponentResult are not suitable here because the type of Result in Result.Json/Result.View/Result.Content is DefaultViewComponentResultHelper and associated with strongly-typed ContentViewComponentResult/ViewViewComponentResult/JsonViewComponentResult. DefaultViewComponentResultHelper is registered as a MVC default service. If the user could replace the service, the return type here should not be fixed to those types, but are any user-defined types that implementing IViewComponentResult.