首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.Net核心控制器-为什么不键入ObjectResult类?

问Asp.Net核心控制器-为什么不键入ObjectResult类?
EN

Stack Overflow用户
提问于 2020-08-20 15:25:48
回答 1查看 154关注 0票数 1

下面的方法编译得很好,我更希望这是一个编译错误:

代码语言:javascript
复制
    [HttpGet("some/route")]
    public ActionResult<string> GetSomething()
    {
        return Ok(23);
    }

string和int是不兼容的,但它可以很好地编译。在使用Swagger (Open API)等工具时,它们会生成不正确的端点定义。

我想知道为什么ObjectResult类没有类型化?此外,是否有解决此问题的方法?

编辑:当swagger定义声明返回一个string时,我试图避免bug,但实际上你得到了一个int。如果JSON s和strings没有意义,那么想象一下两个随机的int对象DtoA和DtoB。

EN

回答 1

Stack Overflow用户

发布于 2020-08-20 16:06:33

据我所知,响应不包含int和string类型。响应体的类型是text/plain、application/json或其他类型。

所以不需要检查OkObjectResult的ActionResultObjectValue值中的int或string,正常情况下,都会转换成string或byte作为响应内容。

此外,swagger将根据ActionResult<Tvalue>的T值类型生成生成端点定义。

如果你返回public ActionResult<int> GetSomething(),你会发现结果会被转换成int。

​

​

更新:

OkObjectResult继承ActionResult。返回的子类不会影响父类compilation.This的设计。

ActionResult<T>使您能够返回从ActionResult派生的类型或返回特定类型。

要强制执行编译错误,可以只返回int,这是一个特定的类型。当您返回int时,您可能会看到出现错误消息。

​

​

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63500222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档