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

Asp.net core Asp.Net核心控制器-为什么不键入ObjectResult类?,asp.net-core,swagger,Asp.net Core,Swagger,以下方法编译得很好,我更希望这是一个编译错误: [HttpGet("some/route")] public ActionResult<string> GetSomething() { return Ok(23); } [HttpGet(“部分/路由”)] 公共行动结果GetSomething() { 返回Ok(23); } string和int是不兼容的,但这可以很好地编译。当使用Swagger(openapi

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

    [HttpGet("some/route")]
    public ActionResult<string> GetSomething()
    {
        return Ok(23);
    }
[HttpGet(“部分/路由”)]
公共行动结果GetSomething()
{
返回Ok(23);
}
string
int
是不兼容的,但这可以很好地编译。当使用Swagger(openapi)等工具时,它们会生成不正确的端点定义

我想知道为什么没有键入
ObjectResult
类?此外,是否有解决这个问题的办法

编辑:
当swagger定义声明返回
字符串时,我试图避免出现错误,但实际上,您得到的是
int
。如果
int
s和
string
s没有意义,那么想象两个随机的JSON对象
DtoA
DtoB
,据我所知,响应不包含int和string类型。响应主体的类型为text/plain、application/json或其他

因此,无需检查
OkObjectResult
ActionResultObjectValue
值中的int或字符串。通常情况下,将所有转换为字符串或字节作为 回应内容

此外,swagger将根据
ActionResult
的Tvalue类型

如果返回
public ActionResult GetSomething()
,您将发现结果将转换为
int


更新:

OkObjectResult继承ActionResult。返回的子类不会影响父类的编译。这是按设计的

ActionResult
允许您返回从
ActionResult
派生的类型或返回特定类型

要强制执行编译错误,可以只返回int,它是一种特定类型。当您返回
int
时,您可以看到错误消息


当我在OK
ObjectResult
中返回
int
时,我试图避免错误,但方法定义声明它返回
ActionResult
。如果
int
s和
string
s没有意义,那么用随机对象
DtoA
DtoB